好文档 - 专业文书写作范文服务资料分享网站

2020年华为精选50面试题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

2020年华为精选50面试题及答案

1. static有什么用途?(请至少说明两种)

1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中維持其值 不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所 用函数

访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。 那就是,这个函数被限制在声明它的模块的本地范围内使用

2. 引用与指针有什么区别?

1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。

3. 描述实时系统的基本特性

在特定时间内完成特定的任务,实时性与可靠性。

4. 全局变量和局部变量在内存中是否有区别?如果有,是什

么区别?

全局变量储存在静态数据库,局部变量在堆栈。

5. 什么是平衡二叉树?

左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。

6. 堆栈溢岀一般是由什么原因导致的?

没有回收垃圾资源。

7. 什么函数不能声明为虚函数?

constructor函数不能声明为虚函数。

8. 冒泡排序算法的时间复杂度是什么?

时间复杂度是0 02)。

9. Internet釆用哪种网络协议?该协议的主要层次结构?

Tcp/ip协议

主要层次结构为:应用层/传输层個络层/数据槌路层/物理层。

10. IP地址的编码分为哪俩部分?

IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上 之后

才能区分哪些是网络位哪些是主机位。

11. 用户输入M,N值,从1至N开始顺序循环数数,每数到 M输出该数值,直至全部输出。写岀C程序。

循环链表,用取余操作做

12. 某32位系统下,C++程序,请计算sizeof的值.

char str[] = http: //www. ibegroi5>. com/ char *p = str ; int n = 10;

sizeof (str ) = ? (1) sizeof ( p ) = ? (2)

sizeof ( n ) = ? (3) void Foo ( char str [100]) (

mm

sizeof( str ) = ?(4)

rt

w

}

void *p = malloc( 100 ); mm

sizeof ( p ) = ? (5)

(1) 17 (2) 4 (3) 4 (4) 4 (5) 4

13. 阅读下面代码,回答问题.

1) . void G et Memory (char **p, int num) {

*p 二(char *)malloc(num); }

void Test(void){

char *str = NULL;

G etMemory(festr, 100); strcpy(str, \}

请问运行Test函数会有什么样的结果? 输岀“he\

2) . char *GetMemory(void) {

char p[] = \}

void Test (void) I

char *str = NULL; str = G etMemory (); print f (str); }

请问运行Test函数会有什么样的结果? 无效的指针,输岀不确定

14. C++中为什么用模板类。

(1 )可用来创建动态増长和减小的数据结构 (2) 它是类型无关的,因此具有很高的可复用性。

(3) 它在编译时而不是运行时检查数据类型,保证了类型安全 (4) 它是平台无关的,可移植性 (5) 可用于基本数据类型

15. 程序什么时候应该使用线程,什么时候单线程效率高。

1. 耗时的操作使用线程,提高应用程序响应

2. 并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。 3. 多CPU系统中,使用线程提高CPU利用率

4. 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几 个独立或

半独

立的运行部分,这样的程序会利于理解和修改。 其他情况都使用单线程。

16. Linux有内核级线程吗?

线程通常被定义为一个进程中代码的不同执行路线。从实现方式上划分,线 程有两种类型:“用户级线程〃和“内核级线程〃 O

用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系 统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控 制用户线程。这种线程甚至在象DOS这样的操作系统中也可实现,但线程 的调度需要用户程序完成,这有些类似Windows 3.x的协作式多任务。另 外一种则需要内核的参与,由内核完成线程的调度。其依赖于操作系统核心, 由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。用户线 程不需要额外的内核开支

,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但 是当一个线程因I/O而处于等待状态时,整个进程就会被调度程序切换为 等待状态,苴他线程得不到运行的机会;而内核线程则没有各个限制,有利 于发挥多处理器的并发优势,但却占用了更多的系统开支。

Windows NT和OS/2支持内核线程。Linux支持内核级的多线程。

17. C++中什么数据分配在栈或堆中,New分配数据是在近堆 还是远堆中?

栈:存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管 理堆:程序运行时动态申请,new和malloc申请的内存就在堆上。

18. 使用线程是如何防止出现大的波峰。

意思是如何防止同时产生大量的线程,方法是使用线程池,线程池具有可以 同时提高调度效率和限制资源使用的好处,线程池中的线程达到最大数时, 其他线程就会排队等候。

19. 函数模板与类模板有什么区别?

函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的 实例化 必须由程序员在程序中显式地指定。

20. winsock建立连接的主要实现步骤?

服务器端:sockerO建立套接字,绑定(bind)并监听(listen),用accept ()等待客户端连接。

客户端:sockerO建立套接字,连接(connect)服务器,连接上后使用send。 和recv (),在套接字上写读数据,直至数据交换完毕,closesocket 0关 闭套接字。

服务器端:accept ()发现有客户端连接,建立一个新的套接字,自身重新 开始等待连接。该新产生的套接字使用send。和recv ()写读数据,直至 数据交换完毕,closesocket 0关闭套接字。

21. 动态连接库的两种方式?

调用一个DLL中的函数有两种方法:

1. 载入时动态槌接(load-time dynainic linking),模块非常明确调用某 个导岀函数,使得他们就像本地函数一样。这需要槌接时槌接那些函数所在 DLL卽寻入库,导入库向系统提供了载入DLL时所需的傷息:及DLL函数定位。

2. 运行时动态槌接(run-time dynainic linking),运行时可以通过 LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调 用GetProcAddress获取DLL函数的岀口地址,然后就可以通过返回的函数 指针调用DLL函数了。如此即可避免导入库文件了。

22. IP组播有那些好处?

Internet ±产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽 的急剧消

耗和网絡拥挤问题。组播是一种允许一个或多个发送者(组播源) 发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播可以 大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条 链路上只传送单一的数据包。所以说组播技术的核心就是针对如何节约网络 资源的前提下保证服务质量。

23. 列举几种进程的同步机制及优缺点

1) 信号量机制:一个信号量只能置一次初值,以后只能对之进行P操作或 V操作。

2020年华为精选50面试题及答案

2020年华为精选50面试题及答案1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中維持其值不变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被
推荐度:
点击下载文档文档为doc格式
3vikk5sm7j76vac3ljxx41z4g1sgcd0188r
领取福利

微信扫码领取福利

微信扫码分享