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

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

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

33. static全局变量与普通的全局变量有什么区别? static局部 变量和普通局部变量有什么区别?

static函数与普通函数有什么区别?

全局变量(外部变量)的说明之前再冠以satic就构成了静态的全局变量。全 局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.这两 者在存储方式上并无不同.这两者的区别虽在于非静态全局变量的作用域是 整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个 源文件中都是有效的;

而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在 同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于 —个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件 中引起错误。从以上分析可以看岀,把局部变量改变为静态变量后是改变了 它的存储方式即改变了它的生存期.把全局变量改变为静态变量后是改变 了它的作用域,限制了它的使用范围;

static函数与普通函数作用域不同.仅在本文件。只在当前源文件中使用的 函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定 义.对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用 这些函数的源文件要包含这个头文件;

static全局变量与普通的全局变量有什么区别:static全局变量只初使化 —次,防

止在其他文件单元中被引用;

static局部变里和普通局部变里有什么区别:static局部变里只被初始化 —次,下

一次依据上一次结果值;

static凶数与晋通凶数有什么区别:static凶数在内存中只有一份,晋通函 数在每个

被条用中維持一份拷贝;

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

(1) 可用来创建动态増长和减小的数据结构

(2) 它是类型无关的,因此具有很高的可复用性。

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

35. 如何理解软件的健壮性和高可靠性。

mt性:

健壮性具体指的是系统在不正常的输入或不正常的外部环境下仍能表现岀 正常的程度.

面向健壮性的编程有以下几点要求或优点:

处理未期望的行为和错误终止

即使终止执行,也要准确/无歧义的向用户展示全面的错误信息 错误信息有助于进行debug 健壮性原则:

总是假定用户为恶意用户,假定自己的代码会失败 把用户想象成一个silly b,可能输岀任何东西

注意,因为用户很silly,最好要返回给用户错误提示信息,而且要详细准 确无歧义!(其实这对debug非常有帮助,尤其是像我这样喜欢用syso找 虫子的白痴CodeDog) 对自己的代码要保守,对用户的行为要开放 面向健壮性编程的原则:

封闭实现细节,限定用户的恶意行为 考虑各种各样的极端情况,没有possible 高可靠性:

高可靠性(high reliability)指的是运行时间能够满足预计时间的一个系 统或组件。

在信息技术领域,高可靠性(high reliability)指的是运行时间能够满足 预计时间的一个系统或组件。可靠性可以用“100%可操作性”或者“从未失 败”这两种标准来表示。一个被广泛应用但却难以达到的标准是著名的“5 个9标准”,就是说工作的可靠性要达到99. 999%o

由于一个计算机系统或网络由许多部件组成,而且这些部件都要保证高可靠 性才能纟隹持正常的操作过程。因此,许多可靠性计划侧重于备份、故障处理、 数据存储以及访问方面。对存储而言,一个普遍釆用的方法是冗余磁盘阵列, 最近釆用存储局域网。

—些可靠性专家强调,为保证高可靠性,系统的任何部件都要进行仔细的规 划设计,并在投入运行前进行彻底的检查测试工作。比如说,一个未经彻底 测试的新的应用程序在运行过程中很可能岀现频繁的中断。

36. 了解哪些linux内核的模块。

Linux内核的五大模块1.进程调度模块2.内存管理模块3.文件系统模块 4.进程间通信模块5.网络接口模块

进程调度模块

用来负责控制进程对CPU资源的使用。所釆取的调度策略是各进程能够公平 合理地访问CPU,同时保证内核能及时地执行硬件操作。

内g里模块

用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还 支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的 内存容量。并可以利用文件系统,对暂时不用的内存数据块交换到外部存储 设备上去,当需要时再交换回来。

文件系繼块

用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存 储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提 供并支持与其它操作系统兼容的多种文件系统格式。

进程间通信模块

用于支持多种进程间的信息交换方式 网络接口模块

提供对多种网络通信标准的访问并支持许多网絡硬件

37. 画岀三次握手和四次挥手流程图。

TCP三次握手

TCP四次挥手

Client Server r FIN WAIT 11 _____ FIN A ~ ~ r— -------- 1— ------- _ ---- CLOSE WAIT A ack 四] ---- —— 一—FIN_WAIT_2 ------- ---- ! LAST_ACK FIN N _________ 1 ---- ----- -- ---------- — 1 TIME_WAIT 1—一 ----- r --- ~ ____ ACK=1 ac<=K+l 一 一 CLOSED 1

38. 请阐释https建立连接过程。

建立连接

成TP和HTTPS都需要在建立连接的基础上来进行数据传输,是基本操作 当客户在浏览器中输入网址的并且按下回车,浏览器会在浏览器DNS缓存, 本地DNS缓存,和Hosts中寻找对应的记录,如果没有获取到则会请求 DNS服务来获取对应的ip 当获取到ip后,tcp连接会进行三次握手建立连接 tcp的三次挥手和四次挥手 过程简图

客户 服务器

LISTEN (被动打

开)

SYN_RCVD

ESTABLISHED

CLOSE_WAIT (被动

关闭)

LAST.ACK

CLOSED

三次挥手(建立连接)

第一次:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入 SYN.SEND状态,等待服务器确认;

第二次:服务器收到SYN包,向客户端返回ACK (ack=j+1),同时自己也 发送一个SYN包(syn=k),即SYNUCK包,此时服务器进入SYN_RCVD状 态;

第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包

ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态, 完成三次握

手。

完成三次握手,客户端与服务器开始传送数据,也就是ESTABLISHED状态。 三次握手保证了不会建立无效的连接,从而浪费资源。 四次挥手(断开连接)

第一次:TCP客户端发送一个FIN,用来关闭客户到服务器的敖据传送。 第二次:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加 1。和SYN —样,一个FIN将占用一个序号。

第三次:服务器关闭客户端的连接,发送一个FIN给客户端。

第四次:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。 HTTP请求过程

建立连接完毕以后客户端会发送响应给服务端 服务端接受请求并且做岀响应发送给客户端 客户端收到响应并且解析响应响应给客户

client

■ server

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

33.static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?全局变量(外部变量)的说明之前再冠以satic就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.这两者在存储方式上并无不同.这两者的区别虽在于非静态全局变量的作
推荐度:
点击下载文档文档为doc格式
3vikk5sm7j76vac3ljxx41z4g1sgcd0188r
领取福利

微信扫码领取福利

微信扫码分享