网络基础面试题及答案(网络基础面试题及答案大全)

网络设计 363
本篇文章给大家谈谈网络基础面试题及答案,以及网络基础面试题及答案大全对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、AI面试题第二弹(神经网络基础)

本篇文章给大家谈谈网络基础面试题及答案,以及网络基础面试题及答案大全对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

AI面试题第二弹(神经网络基础)

提取主要特征,减小网络参数量,减小计算量

层层传递的梯度1 梯度爆炸

层层传递的梯度1 梯度消失

与权重有很大关系,激活函数的影响较小。

每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)。Hinton在训练深度信念网络(Deep Belief Networks中,使用了这个方法,在各层预训练完成后,再利用BP算法对整个网络进行训练。

这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。

比较常见的是l1l1l1正则,和l2l2l2正则,在各个深度框架中都有相应的API可以使用正则化

反向传播中,经过每一层的梯度会乘以该层的权重。

举个简单例子:

为了得到一致***设而使***设变得过度复杂称为过拟合(overfitting), 过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差 。也就是说模型的泛化能力弱。

过拟合主要由两个原因造成,数据集太小或模型太复杂

(1). 数据集扩增(Data Augmentation)

(2). 改进模型

·Early Stopping。在模型效果比较好的时候便提前停止训练

 ·正则化(regularization)

L1:稀疏参数

L2:更小参数

·Dropout

·多任务学习

深度学习中两种多任务学习模式:隐层参数的硬共享和软共享

硬共享机制是指在所有任务***享隐藏层,同时保留几个特定任务的输出层来实现。硬共享机制降低了过拟合的风险。多个任务同时学习,模型就越能捕捉到多个任务的同一表示,从而导致模型在原始任务上的过拟合风险越小。

软共享机制是指每个任务有自己的模型,自己的参数。模型参数之间的距离是正则化的,以便保障参数相似性。

见后文

leaky relu

输入是x输出是y,正常的流程是:我们首先把x通过网络前向传播,然后把误差反向传播以决定如何更新参数让网络进行学习。使用Dropout之后,过程变成如下:

(1)首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(图中虚线为部分临时被删除的神经元)

(2) 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。

(3)然后继续重复这一过程:

恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)

从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。

对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。

不断重复这一过程。

没有对数据进行归一化

忘记检查输入和输出

没有对数据进行预处理

没有对数据正则化

使用过大的样本

使用不正确的学习率

在输出层使用错误的激活函数

网络中包含坏梯度

初始化权重错误

过深的网络

隐藏单元数量错误

网络设计不合理(任务-网络不匹配)

机器学习有个很重要的***设:就是***设训练数据和测试数据是满足独立同分布的,这保障了通过训练数据获得的优秀模型也能够在测试集获得好的效果。但是在机器学习训练中输入层的每个批量(X,Y)中X的分布是不一致的,并且神经网络的隐藏层的输入分布在每次训练迭代中发生变化。 BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。

BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前(激活前)的 输入值 (就是那个x=WU+B,U是输入) 随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近 (对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这 导致反向传播时低层神经网络的梯度消失 ,这是训练深层神经网络收敛越来越慢的 本质原因 , 而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布 ,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是 这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

但是接下来的问题是:如果都通过BN,那么不就跟把非线性函数替换成线性函数效果相同了,意味着网络的非线性表达能力下降了, 所以BN为了保证非线性的获得,对变换后的满足均值为0方差为1的x又进行了scale加上shift操作(y=scale*x+shift), 每个神经元增加了两个参数scale和shift参数,这两个参数是通过训练学习到的,意思是通过scale和shift把这个值从标准正态分布左移或者右移一点并长胖一点或者变瘦一点,每个实例挪动的程度不一样,这样等价于激活前的值经过标准正太分布归一化后再从正中心周围的线性区往非线性区动了动。核心思想应该是想找到一个线性和非线性的较好平衡点,既能享受非线性的较强表达能力的好处,又避免太靠非线性区两头使得网络收敛速度太慢

Batch Normalization 好处:(1)提高了训练速度,收敛速度也大大加快(2)另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等 (3)可以防止梯度消失(4)BN类似于Dropout的一种防止过拟合的正则化表达方式,可以有效防止过拟合,不用太依赖dropou和正则化

以下情况最好不要使用BN:(1)数据不平衡(2)batch_size太小

batch_size是机器学习中的一个重要参数,决定了梯度下降的方向,如果数据集比较小,完全可以***用全数据集的形式计算梯度,由全数据集确定的梯度方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。对于大型数据集则需要使用mini-batch_size,因为随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。

当batch_size=1,即在线学习,模型难以达到收敛 。

合理增加batch_size好处 :

(1)内存利用率提高了,大矩阵乘法的并行化效率提高

(2)跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。

(3)在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小

盲目增大 Batch_Size 坏处 :

(1)内存利用率提高了,但是内存容量可能撑不住了

(2)跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同精度所需要的 epoch 数量越来越多,花费的时间越长

(3)大的batchsize收敛到sharp minimum,而小的batchsize收敛到flat minimum,后者具有更好的泛化能力。

总之batchsize在变得很大(超过一个临界点)时,会降低模型的泛化能力。在这个临界点之下,模型的性能变换随batch size通常没有学习率敏感

    目标所在的真实框(ground truth) 与算法预测的目标所在的框(bounding box)的交集与并集的比值,我们会用IOU阈值来判定预测的bounding box是否有效。一般阈值会设定在0.5,当IOU的值大于等于0.5时,我们会把这个预测的bounding box 归为正类,而小于0.5的归为负类。

牛顿法使用的是目标函数的二阶导数,在高维情况下这个Hessian(n*n维度)矩阵非常大,计算复杂度是n*n,计算和存储都是问题

(1) 通过控制卷积核个数实现升维或者降维,从而减少模型参数和计算量

(2) 用于不同channel上特征的融合

(3)1x1的卷积相当于全连接层的计算过程,并且加入了非线性激活函数,从而增加了网络的非线性,使得网络可以表达更加复杂的特征。

它能够把输入的连续实值变换为0和1之间的输出,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1

缺点:

(1)函数的饱和区,导致梯度几乎为0,造成梯度消失问题

(2)Sigmoid 的 output 不是0均值,具体解释见

(3)其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

它解决了Sigmoid函数的不是零均值输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。

(1)在正区间解决了梯度消失的问题

(2)函数简单,计算速度快,收敛速度远快于sigmoid和tanh

缺点:

(1)Relu函数输出不是0均值

(2)神经元坏死问题:指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新,有两个主要原因导致这种状况发生

        (1) 非常不幸的参数初始化,这种情况比较少见 

        (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以***用X***ier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法

为了解决ReLU函数带来的神经元坏死问题 , 提出了将ReLU的前半段设为αx,α通常设为0.01,,另外一种直观的想法是基于参数的方法PReLU函数, α可由方向传播算法学习出来。

ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:(1)不会有神经元坏死现象(2)函数输出均值接近于0

但是ELU的小问题就是计算量稍微有点大。

1、使用不同的激活函数,比如Relu,Leak-Relu,PRelu,elu等激活函数代替sigmoid函数

2、使用Batch Normalizaion(批量归一化)

3、使用残差网络

4、预训练加微调

1、梯度裁剪

2、权重正则化

两个3x3的卷积核的感受野比5x5的卷积核的感受野大,在保持相同感受野的同时,用3x3的卷积核可以提升网络的深度,可以很明显的减少计算量。

1、局部连接

2、权值共享:减小参数量

3、池化操作:增大感受野

4、多层次结构:可以提取low-level以及high-level的信息

1、数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势。

2、数据集没有局部相关特性,目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等领域,这些领域的一个共性是局部相关性。图像中像素组成物体,语音信号中音位组合成单词,文本数据中单词组合成句子,这些特征元素的组合一旦被打乱,表示的含义同时也被改变。对于没有这样的局部相关性的数据集,不适于使用深度学习算法进行处理。举个例子:预测一个人的健康状况,相关的参数会有年龄、职业、收入、家庭状况等各种元素,将这些元素打乱,并不会影响相关的结果。

作用 :对输入的特征图进行压缩,

一方面使特征图变小,简化网络计算复杂度;

一方面进行特征压缩,提取主要特征。

通常来讲,max-pooling的效果更好,虽然max-pooling和***erage-pooling都对数据做了下***样,但是 max-pooling感觉更像是做了特征选择,选出了分类辨识度更好的特征,提供了非线性 。 pooling的主要作用一方面是去掉冗余信息,一方面要保留feature map的特征信息,在分类问题中,我们需要知道的是这张图像有什么object,而不大关心这个object位置在哪,在这种情况下显然max pooling比***erage pooling更合适。在 网络比较深的地方,特征已经稀疏了,从一块区域里选出最大的,比起这片区域的平均值来,更能把稀疏的特征传递下去 。

***erage-pooling更强调对整体特征信息进行一层下***样,在减少参数维度的贡献上更大一点,更多的体现在 信息的完整传递这个维度 上,在一个很大很有代表性的模型中,比如说DenseNet中的模块之间的连接大多***用***erage-pooling,在减少维度的同时,更有利信息传递到下一个模块进行特征提取。

***erage-pooling在 全局平均池化操作 中应用也比较广,在ResNet和Inception结构中最后一层都使用了平均池化。有的时候在模型接近 分类器的末端使用全局平均池化还可以代替Flatten操作 ,使输入数据变成一位向量。

CNN网络中另外一个不可导的环节就是Pooling池化操作,因为Pooling操作使得feature map的尺寸变化,***如做2×2的池化(步长也为2),***设那么第l+1层的feature map有16个梯度,那么第l层就会有64个梯度,这使得梯度无法对位的进行传播下去。其实解决这个问题的思想也很简单,就是把1个像素的梯度传递给4个像素,但是需要保证传递的loss(或者梯度)总和不变。根据这条原则,mean pooling和max pooling的反向传播也是不同的

mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把 某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变 ,图示如下 :

(2) max pooling

max pooling也要满足梯度之和不变的原则 ,max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么 反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。 所以max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大,也就是max id,这个变量就是记录最大值所在位置的,因为在反向传播中要用到,那么***设前向传播和反向传播的过程就如下图所示 :

28、细粒度分类

29、LSTMRNN

30、解释LSTM结构(相对于RNN)的好处

31、RNN的梯度消失原因和解决办法

32、Object Detection

33、Unet的介绍

34、FCN和Unet的区别

35、RCNN系列的算法流程和区别

36、Fast RCNN中 bbox 回归的损失函数什么

37、解释 ROI Pooling 和 ROI Align

38、Mask RCNN中 mask branch 如何接入 Faster RCNN中

39、解释 FPN

40、解释 ROI Align

41、简述 YOLO 和 SSD

42、简述 Hough 直线检测、Sobel 边缘检测算法流程

43、Mask RCNN中的anchors如何判定为正负样本

44、简述 NMS 算法流程

45、attention起源是用在哪里?pixel还是frame,是soft还是hard

46、anchor的正负样本比是多少

47、算法和激活函数等

48、BN的原理和作用

49、BN层反向传播,怎么求导

50、BN 的作用和缺陷,以及针对batch_size小的情况的改进(GN)

51、BN层,先加BN还是激活,有什么区别

52、手推BP

53、优化算法举例和他们的区别(SGD、SGDM、RMSprop、Adam)

54、随机梯度下降和梯度下降

55、训练不收敛的原因有哪些

56、简述 SVM 流程、核函数寻参及常见的核函数举例

57、batch_size 和 learning rate 的关系(怎么平衡和调整二者)

58、解释过拟合和欠拟合,以及解决方法

59、激活函数有哪些,各自区别

60、损失函数有哪些

61、Sigmoid 和 ReLu 对比(各自优缺点)

62、为什么不用sigmoid而用relu?做出了哪些改进?

63、梯度消失和梯度爆炸的原因和解决方法

64、Precision 和 Recall 的定义

65、精确率高、召回率低是为什么

66、SVM,线性回归和逻辑回归的原理及区别

67、PCA原理,PCA和SVD的区别和联系

68、正则化怎么选择,有哪些方式

69、L1、L2范数,区别

70、boost、Adaboost

71、dropout和batch normalization

72、讲一下决策树和随机森林

73、讲一下GBDT的细节,写出GBDT的目标函数。 GBDT和Adaboost的区别与联系

74、偏差、方差

75、距离度量公式哪些,区别

76、多标签识别怎么做

77、data argumentation怎么处理的

78、数据不均衡怎么处理、只有少量带标签怎么处理

79、权重初始化方法都有哪些

80、权值衰减这个参数怎么设置

81、分类问题有哪些评价指标?每种的适用场景。

82、无监督学习了解哪些

83、图像处理Opencv

84、边缘检测算子有哪些

85、霍夫变换

86、直方图是什么

87、canny算子是怎么做的

88、图像的特征提取有哪些算法,适用范围、优缺点

参考:

网络方面都面试些什么内容

这是yahoo面试题,供你参考:

Question 1. (单选)

IP地址18.7.0.1属于:

1. A类地址

2. B类地址

3. C类地址

4. D类地址

Question 2. (单选)

FTP协议的端口号码是:

1. 21

2. 23

3. 25

4. 1080

Question 3. (多选)

正则表达式 ab?c 匹配的字符串是:

1. abcd

2. acd

3. abdc

4. abbc

Question 4. (多选)

UNIX程序运行时会自动打开的文件描述符包括:

1. 标准输入

2. 标准输出

3. 标准错误

4. 系统日志

Question 5. (多选)

下列可以用于进程间通信的技术有:

1. 管道

2. SOCKET

3. 共享内存

4. 消息队列

Question 6. (多选)

数据通信中数据传输速率是最重要的性能指标之一,它指单位时间内传送的二进制数据

位数,常用的计量单位是:

1. Kbps

2. Byte

3. MB

4. Mbps

Question 7. (单选)

互操作性是指在不同环境下的应用程序可以相互操作,交换信息。要使***用不同数据格式

的各种计算机之间能够相互理解,这一功能是由下面哪一层来实现的?

1. 应用层

2. 表示层

3. 会话层

4. 传输层

Question 8. (单选)

在UNIX的Shell程序中,可以使用位置变量。若要指明Shell引用的最近后台进程的号码,

可以使用位置变量

1. $$

2. $!

3. $#

4. $-

Question 9. (单选)

设二叉树根结点的层次为0,一棵深度(高度)为k的满二叉树和同样深度的完全二叉树各

有f个结点和c个结点,下列关系式不正确的是:

1. f=c

2. cf

3. f=2k+1-1

4. C2k-1

Question 10. (单选)

某二叉树结点的对称序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E

。该二叉树结点的前序序列为

1. E、G、F、A、C、D、B

2. E、A、C、B、D、G、F

3. E、A、G、C、F、B、D

4. E、G、A、C、D、F、B

Question 11. (单选)

某二叉树结点的对称序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E

该二叉树对应的树林包括多少棵树?

1. 1

2. 2

3. 3

4. 4

Question 12. (单选)

***设就绪队列中有10个进程,系统将时间片设为200ms, CPU进行进程切换要花费10ms。

则系统开销所占的比率约为

1. 1%

2. 5%

3. 10%

4. 20%

Question 13. (单选)

长度相同但格式不同的2种浮点数,***设前者阶码长、尾数短,后者阶码短、尾数长,其

它规定均相同,则它们可表示的数的范围和精度为:

1. 两者可表示的数的范围和精度相同

2. 前者可表示的数的范围大但精度低

3. 后者可表示的数的范围大且精度高

4. 前者可表示的数的范围大且精度高

Question 14. (单选)

设有一个用数组Q[1..m」表示的环形队列,约定f为当前队头元素在数组中的位置,r为

队尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为

1. r-f

2. (m+r-f) mod m

3. (m-r+f)mod m

4. (m-r-f) mod m

Question 15. (单选)

计算机最主要的工作特点是

1. 存储程序与自动控制

2. 高速度与高精度

3. 可靠性与可用性

4. 有记忆能力

Question 16. (单选)

具有多媒体功能的微型计算机系统中,常用的CD-ROM是

1. 只读型大容量软盘

2. 只读型光盘

3. 只读型硬盘

4. 半导体只读存储器

Question 17. (单选)

下列字符中,ASCII码值最小的是

1. a

2. A

3. x

4. Y

Question 18. (单选)

当个人计算机以拨号方式接入Internet网时,必须使用的设备是

1. 网卡

2. 调制解调器(Modem)

3. 电话机

4. 浏览器软件

Question 19. (单选)

微机计算机硬件系统中最核心的部件是

1. 主板

2. CPU

3. 内存储器

4. I/O设备

Question 20. (单选)

下列关于系统软件的四条叙述中,正确的一条是

1. 系统软件与具体应用领域无关

2. 系统软件与具体硬件逻辑功能无关

3. 系统软件是在应用软件基础上开发的

4. 系统软件并不具体提供人机界面

Question 21. (单选)

在计算机网络中,表征数据传输可靠性的指标是

1. 传输率

2. 误码率

3. 信息容量

4. 频带利用率

Question 22. (单选)

以下哪一个不是栈的基本运算

1. 删除栈顶元素

2. 删除栈底元素

3. 判断栈是否为空

4. 将栈置为空栈

Question 23. (单选)

设有关系R(S,D,M),其函数依赖集F={S→D,D→M}。则关系R至多满足

1. 1NF

2. 2NF

3. 3NF

4. BCNF

Question 24. (单选)

网络协议的三个要素是语法、语义与

1. 工作原理

2. 时序

3. 进程

4. 服务原语

Question 25. (单选)

WWW的超链接中定位信息所在的位置使用的是

1. 超文本(hypertext)技术

2. 统一***定位器(URL, Uniform Resource Locators)

3. 超媒体(hypermedia技术)

4. 超文本标注语言HTML

Question 26. (单选)

提高软件质量和可靠的技术大致可分为两大类:其中一类就是避开错误技术,但避开错

误技术无法做到完美无缺和绝无错误,这就需要

1. 测试

2. 消除错误

3. 避开错误

4. 容错

Question 27. (单选)

可行性研究要进行一次_____需求分析

1. 详细的

2. 全面的

3. 简化的、压缩的

4. 彻底的

Question 28. (多选)

以下哪些内容需要进行配置管理?

1. 代码

2. 需求

3. 详细设计

4. 项目例会记录

Question 29. (单选)

详细设计的结果基本决定了最终程序的

1. 代码规模

2. 运行速度

3. 质量

4. 可维护性

Question 30. (多选)

软件开发包括哪些过程?

1. 需求分析

2. 设计

3. 编码

4. 测试

Question 31. (多选)

C++编译器通常不进行( )的检查

1. 函数原型

2. 变量类型

3. 数组边界

4. 指针类型

Question 32. (多选)

在派生类中能直接访问基类的哪些成员?

1. 公有成员

2. 保护成员

3. 私有成员

4. 所有成员

Question 33. (单选)

已知f1 f2同一类两个成员函数,但f1不能调用f2;则下列哪种说***确?

1. f1 f2都是静态函数

2. f1是静态,f2不是静态函数

3. f1不是静态函数,f2是静态函数

4. f1 f2都不是静态函数

Question 34. (单选)

X = ++i + ++j; X的值等于?

1. i + j + 3

2. i + j + 2

3. i + j + 1

4. i + j

Question 35. (单选)

设int x; 则经过()之后,语句*px=0;可以将变量x的值置为0。

1. int *px;

2. int const *px = x;

3. int *const px=x;

4. const int *px = x;

Question 36. (单选)

使用操作符setw对数据进行格式输出时,需要包含( )文件

1. iostream.h

2. fstream.h

3. iomanip.h

4. stdlib.h

Question 37. (多选)

调用一成员函数时,下面列出的哪些情况使用动态联编(动态绑定)?

1. 通过对象调用一虚函数

2. 通过指针或引用调用一虚函数

3. 通过对象调用静态函数

4. 通过指针或引用调用一静态函数

Question 38. (单选)

***定C是一个类,要为其实现加号运算符重载成员函数,实现两个C类对象的加法,并返

回结果。该成员函数的声明应该为:

1. C operator+(C a, C b);

2. C operator+ (C a)

3. operator+ (C a)

4. C operator+(C a, C b)

Question 39. (多选)

关于类的构造函数,哪些说法是正确的?

1. 可以是虚函数

2. 返回类型只能是void

3. 一个类只能有一个构造函数

4. 没有任何返回类型

Question 40. (单选)

C++中,对于基类中的protected成员,当以protected方式派生一个新类时,该成员将成

为派生类的( )成员

1. private

2. protected

3. public

4. 非法

Question 41. (单选)

C++基类指针可以访问派生类对象,但不能访问派生类对象的( )成员

1. private

2. protected

3. public

4. 新增

Question 42. (多选)

const int *p说明不能修改 ( )

1. p指针

2. p指针指向的变量

3. p指针指向的数据类型

4. 上述A、B、C三者

Question 43. (多选)

下列定义中,哪些是错误的?

1. template T foo (int *T);

2. inline template void foo (T, unsigned int );

3. template T foo (U);

4. template foo (T, T);

Question 44. (单选)

考虑函数原型void test(int a,int b=7,char=tquo;*tquo;),下面的函数调用中,属于不合法调

用的是

1. test(5);

2. test(5,8);

3. test(6,tquo;#tquo;)

4. test(0,0.tquo;*tquo;);

Question 45. (多选)

下面关于iterator的用法,哪些是错误的?

const vector ivec;

vector svec;

list ilist;

1. vector::iterator it = ivec.begin();

2. list::iterator it = ilist.begin() + 2;

3. vector::iterator it = svec[0];

4. for (vector::iterator it=svec.begin();it!=svec.end();++it) { …}

Question 46. (多选)

下面的函数声明中,哪些声明表示函数会抛出异常?

1. void funca (int) throw(string);

2. void funcb(int) throw ();

3. void funcc (int);

4. void funcd (int) throw (Exception);

Question 47. (单选)

有如下程序:

class BASE{

char c;

public:

BASE(char n):c(n){}

virtual~BASE(){cout };

class DERIVED:public BASE{

char c;

public:

DERIVED(char n):BASE(n+1),c(n){}

~DERIVED(){cout };

int main()

{  DERIVED(tquo;Xtquo;);

return 0;

}

执行上面的程序将输出()

1. XY

2. YX

3. X

4. Y

Question 48. (多选)

下面哪些运算符不能被重载?

1. 作用域运算符“::”

2. 对象成员运算符“.”

3. 指针成员运算符“-”

4. 三目运算符“? :”

Question 49. (单选)

下面有关重载函数的说法中正确的是

1. 重载函数必须具有不同的返回值类型

2. 重载函数形参个数必须不同

3. 重载函数必须有不同的形参列表

4. 重载函数名可以不同

Question 50. (单选)

C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行

的最大改进是

1. 面向过程

2. 面向对象

3. 安全性

4. 复用性

Question 51. (问答)

编写类String的构造函数、析构函数和赋值函数

已知类String的原型为:

class String

{

public:

String(const char *str = NULL); // 普通构造函数

String(const String other); // 拷贝构造函数

~ String(void); // 析构函数

String operate =(const String other); // 赋值函数

private:

char *m_data; // 用于保存字符串

};

请编写String的上述4个函数。

Question 52. (问答)

请实现一个“先进先出(FIFO)”队列类;并写一段示例代码来演示如何使用您定义的

类完成队列的数据操作。

Question 53. (问答)

请编写代码完成如下功能:

1. 类Shape是纯虚基类,Circle和Squre都是Shape类的派生类;

2. 每个实例都有一个唯一的ID,该ID自动分配,全局统一。如在执行 Circle c1,c2;

Sqaure s1, s2;后,c1的id是1, c2的id是2,s1的id是3,s2的id是4。

3. 每个类实现方法area,计算该实例图形的面积

4. 为类重载cout操作符,输出的数据格式为“名字 id 图形面积”(如:Square 5 ar

ea=100)

5. 实现void displayShapes (Shape []pShape, int iShapeCount); 输出pShape数组中

没有Shape的信息。

6. 实现main函数,创建10个Circle实例,5个Square实例,调用displayShapes()函数输

出Shape信息。

Question 54. (问答)

通常类A的拷贝构造函数的原型写为A(const A);,请问为什么参数一定要使用引用形式?

Question 55. (问答)

C++中的空类(没有定义任何成员的类,如:class Empty {};),默认产生哪些类成员

求面试题(网络部分)答案,高分,急

分类: 电脑/网络

问题描述:

这里有一批关于网络的题目,谁知道答案?

分给答的最多的人,不论先后。我自己也在网上搜索,12点以前要,快快快

What ports does FTP traffic tr***el over?

What ports does mail traffic utilize?

What ports do HTTP and HTTPS use?

Why is NTP required in an NFS neork?

Name some mon mal sofare on the server side

What is CPAN? How do you access it?

What is PEAR?

What advantages does mod_perl h***e over a perl CGI?

What is required to do SSL in Apache 1.x?

What is Tcl?

What is a servlet engine/container?

What is BIND?

Name the steps to setup a sl***e zone in BIND

Name the steps to setup a primary zone in BIND

What mands would you use under Solaris or Linux to modify/view an LDAP tree?

User are plaining of delays when using the neork. What would you do?

What are some of the problems associated with operating a switched LAN?

Name some of the ways of bining TCP/IP traffic and SNA traffic over the same link.

What sort of cabling is suitable for Fast Ether protocols?

What is a Class D IP address?

Why do I sometimes lose a server’s address when using more than one server?

What is Firewall?

How do I monitor the activity of sockets?

How would I put my socket in non-blocking mode?

What are RAW sockets?

What is the role of TCP protocol and IP protocol.

What is UDP?

How can I make my server a daemon?

How should I choose a port number for my server?

Layers in TCP/IP

How can I be sure that a UDP message is received?

How to get IP header of a UDP message

Writing UDP/SOCK_DGRAM ***lications

How many bytes in an IPX neork address?

What is the difference beeen MUTEX and Semaphore?

What is priority inversion?

Different Solutions to dining philosophers problem.

What is a message queue?

Questions on Shared Memory.

What is DHCP?

Working of ping, tel, gopher.

Can I connect o puters to inter using same line ?

解析:

What ports does FTP traffic tr***el over?

21

What ports does mail traffic utilize?

*** tp 25,pop3 110.

What ports do HTTP and HTTPS use?

80

What is CPAN? How do you access it?

Comprehensive Perl Archive Neork (CPAN)是专门为扩充perl模块而设立的。在这个大数据仓库中,成百条有用***供我们***。由于CPAN为Perl提供了搜索工具,所以上面提到的那些***,除了作为整体驱动外,还非常易于被我们搜索和使用。下面你将了解到一些有关这些工具及其在Perl文本中怎样应用CPAN模块的一些知识。

在UNIX和Windows下运行CPAN.Pm

Perl 二进制分布用CPAN打包。并且把所打的包连接到离CPAN最近的目录中,以便下载,编译,安装CPAN模块。在UNIX或Windows命令提示符下,输入下面的文字:

perl –MCPAN –e shell

这样你将进入CPAN交互模式,在这种模式下,你可以通过发出请求来自动安装和更新数据模块。通过在提示符cpanprompt 后面输入h,你便可以得到一列常用的命令清单。如果这是你第一次用CPAN.pm,可能会出现这样的提示:使用配置向导和自动检测。当然了,两种选择其一,其结果都可以使之正常工作。

What is PEAR?

一、什么是PEAR?为什么需要它?

为了创建一个类似于Perl CPAN档案的工具,Stig S. Bakken创立了PEAR项目。PEAR的基本目标是发展成为PHP扩展和库代码的知识库,而这个项目最有雄心的目标则是试图定义一种标准,这种标准将帮助开发者编写可移植、可重用的代码。

Inter上已经有关于该项目的一些文档。例如,一些初始的资料已经可以在PHP正式手册中找到,更多的资料即将加入。

在很大程度上,PEAR还是一项正在进行之中的工作。在未来的几个月内,PEAR安装程序和PEAR网站将有很大的发展。为了在下一个PHP版本中使用PEAR管理数量日益增长的C扩展,以及用PEAR安装程序作为用户把扩展下载和安装到PHP的前端工具,在PHP Core Developer邮件列表上已经有了大量的讨论。

另外,我们还必须关注PEAR的PHP库代码。PEAR的PHP库代码常常被认为是当前设计最好、最整洁的库。PEAR::DB是其中最受欢迎的一个包,这个包是PEAR项目创建的一个数据库抽象库。Bakken正在努力,要把它主要的类和函数移植到C扩展上,使得这个包具有最好的性能。

毫无疑问,这个新的项目必将成为未来PHP最重要的组成部分之一,它使得开发者能够方便地通过PEAR网站共享代码,使得用户能够方便地下载和安装扩展、PHP代码库。

What is Tcl?

Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool mand language的缩写,发音为 "tickle”, 实际上包含了两个部分:一个语言和一个库。

首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。

其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。

What is BIND?

Berkeley Internert Name Domain(BIND)是我们所熟知的域名软件,它具有广泛的使用基础,Inter上的绝大多数DNS服务器都是基于这个软件的。BIND目前由ISC(Inter Sofare Consortium)负责维护,具体的开发由Nominum(nominum)公司来完成。

What is a Class D IP address?

把IP地址的4个字节划分为2个部分,一部分用来标明具体的网络段,即网络ID;另一部分用来标明具体的节点,即宿主机ID。这样的32位地址又分为五类分别对应于A类、B类、C类、D类和E类IP地址。

4.D类地址用于多点播送。

第一个字节以“lll0”开始,第一个字节的数字范围为224~239,是多点播送地址,用于多目的地信息的传输,和作为备用。全零(“0.0.0.0”)地址对应于当前主机,全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

What is Firewall?

什么是防火墙?

防火墙是位于***服务器上的一组相关程序,它们保护私人网络的***不被用户或其它网络访问。(这个词也指程序使用的安全策略)。拥有内部互联网的企业安装了防火墙就可以在允许其员工访问广域网的时阻止外部用户访问公司的私密数据,还可以控制它自己的用户能对什么样的外部数据进行访问。

What is UDP?

UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络***会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议

What is DHCP?

DHCP为动态主机配址协定(Dynamic Host Configuration Protocol),可以动态的分配IP位址给TCP/IP用户端。GN-BR401 Broad Router(路由器)即是DHCP伺服器。Win95与Win2000作业系统使用者透过DHCP要求内部IP位址,TCP/IP用户端可自订IP,或是利用DHCP要求一个IP位址。

2021面试网络工程师的题目

面试 的目的是确定面试者如何处理他们所选择的研究领域的问题,以及他们如何批判性地思考问题。下面我给大家带来2021面试网络工程师的题目参考,希望能帮助到大家!

J***a多线程 面试题 目

1、什么是线程?

线程是 操作系统 能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。

2、线程和进程有什么区别?

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存用来存储本地数据。

3、如何在J***a中实现线程?

两种方式:j***a.lang.Thread 类的实例就是一个线程但是它需要调用j***a.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承j***a.lang.Thread 类或者直接调用Runnable接口来重写run() 方法 实现线程。

4、J***a 关键字volatile 与 synchronized 作用与区别?

Volatile:

它所修饰的变量不保留拷贝,直接访问主内存中的。

在J***a内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,或者main memory中的值不一致的情况。 一个变量声明为volatile,就意味着这个变量是随时会被其他线程修改的,因此不能将它cache在线程memory中。

synchronized:

当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。

三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有 其它 synchronized(this)同步代码块的访问将被阻塞。

四、当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。

五、以上规则对其它对象锁同样适用。

5、有哪些不同的线程生命周期?

当我们在J***a程序中新建一个线程时,它的状态是New。当我们调用线程的start()方法时,状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CPU时间并且讲它们的状态改变为Running。其他的线程状态还有Waiting,Blocked 和Dead。

6、你对线程优先级的理解是什么?

每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和操作系统相关的(OS dependent)。

我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个int变量(从1-10),1代表最低优先级,10代表最高优先级。

7、什么是死锁(Deadlock)?如何分析和避免死锁?

死锁是指两个以上的线程永远阻塞的情况,这种情况产生至少需要两个以上的线程和两个以上的***。

分析死锁,我们需要查看J***a应用程序的线程转储。我们需要找出那些状态为BLOCKED的线程和他们等待的***。每个***都有一个唯一的id,用这个id我们可以找出哪些线程已经拥有了它的对象锁。

避免嵌套锁,只在需要的地方使用锁和避免无限期等待是避免死锁的通常办法。

8、什么是线程安全?Vector是一个线程安全类吗?

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

一个线程安全的计数器类的同一个实例对象在被多个线程使用的情况下也不会出现计算失误。很显然你可以将集合类分成两组,线程安全和非线程安全的。Vector 是用同步方法来实现线程安全的, 而和它相似的ArrayList不是线程安全的。

9、J***a中如何停止一个线程?

J***a提供了很丰富的API但没有为停止线程提供API。JDK 1.0本来有一些像stop(), suspend()和resume()的控制方法但是由于潜在的死锁威胁因此在后续的JDK版本中他们被弃用了,之后J***a API的设计者就没有提供一个兼容且线程安全的方法来停止一个线程。

当run()或者 call()方法执行完的时候线程会自动结束,如果要手动结束一个线程,你可以用volatile 布尔变量来退出run()方法的循环或者是取消任务来中断线程。

10、什么是ThreadLocal?

ThreadLocal用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择ThreadLocal变量。

每个线程都会拥有他们自己的Thread变量,它们可以使用get()set()方法去获取他们的默认值或者在线程内部改变他们的值。ThreadLocal实例通常是希望它们同线程状态关联起来是private static属性。

Kubernetes面试题汇总

1、什么是Kubernetes?

Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡。作为Google的创意之作,它提供了出色的社区,并与所有云提供商合作。因此,我们可以说Kubernetes不是一个容器化平台,而是一个多容器管理解决方案。

2、Kubernetes与Docker有什么关系?

众所周知,Docker提供容器的生命周期管理,Docker镜像构建运行时容器。但是,由于这些单独的容器必须通信,因此使用Kubernetes。因此,我们说Docker构建容器,这些容器通过Kubernetes相互通信。因此,可以使用Kubernetes手动关联和编排在多个主机上运行的容器。

3、什么是Container Orchestration?

考虑一个应用程序有5-6个微服务的场景。现在,这些微服务被放在单独的容器中,但如果没有容器编排就无法进行通信。因此,由于编排意味着所有乐器在音乐中和谐共处,所以类似的容器编排意味着各个容器中的所有服务协同工作以满足单个服务器的需求。

4、Kubernetes如何简化容器化部署?

由于典型应用程序将具有跨多个主机运行的容器集群,因此所有这些容器都需要相互通信。因此,要做到这一点,你需要一些能够负载平衡,扩展和监控容器的东西。由于Kubernetes与云无关并且可以在任何公共/私有提供商上运行,因此必须是您简化容器化部署的选择。

5、您对Kubernetes的集群了解多少?

Kubernetes背后的基础是我们可以实施所需的状态管理,我的意思是我们可以提供特定配置的集群服务,并且集群服务将在基础架构中运行并运行该配置。

因此,正如您所看到的,部署文件将具有提供给集群服务所需的所有配置。现在,部署文件将被提供给API,然后由集群服务决定如何在环境中安排这些pod,并确保正确运行的pod数量。

因此,位于服务前面的API,工作节点和节点运行的Kubelet进程,共同构成了Kubernetes集群。

6、Kubernetes Architecture的不同组件有哪些?

Kubernetes Architecture主要有两个组件 - 主节点和工作节点。如下图所示,master和worker节点中包含许多内置组件。主节点具有kube-controller-manager,kube-apiserver,kube-scheduler等。而工作节点具有在每个节点上运行的kubelet和kube-proxy。

7、您能否介绍一下Kubernetes中主节点的工作情况?

Kubernetes master控制容器存在的节点和节点内部。现在,这些单独的容器包含在容器内部和每个容器内部,您可以根据配置和要求拥有不同数量的容器。

因此,如果必须部署pod,则可以使用用户界面或命令行界面部署它们。然后,在节点上调度这些pod,并根据***需求,将pod分配给这些节点。kube-apiserver确保在Kubernetes节点和主组件之间建立通信。

8、kube-apiserver和kube-scheduler的作用是什么?

kube -apiserver遵循横向扩展架构,是主节点控制面板的前端。这将公开Kubernetes主节点组件的所有API,并负责在Kubernetes节点和Kubernetes主组件之间建立通信。

kube-scheduler负责工作节点上工作负载的分配和管理。因此,它根据***需求选择最合适的节点来运行未调度的pod,并跟踪***利用率。它确保不在已满的节点上调度工作负载。

9、你对Kubernetes的负载均衡器有什么了解?

负载均衡器是暴露服务的最常见和标准方式之一。根据工作环境使用两种类型的负载均衡器,即内部负载均衡器或外部负载均衡器。内部负载均衡器自动平衡负载并使用所需配置分配容器,而外部负载均衡器将流量从外部负载引导至后端容器。

10、Replica Set 和 Replication Controller之间有什么区别?

Replica Set 和 Replication Controller几乎完全相同。它们都确保在任何给定时间运行指定数量的pod副本。不同之处在于***pod使用的选择器。Replica Set使用基于集合的选择器,而Replication Controller使用基于权限的选择器。

Equity-Based选择器:这种类型的选择器允许按标签键和值进行过滤。因此,在外行术语中,基于Equity的选择器将仅查找与标签具有完全相同 短语 的pod。

示例:***设您的标签键表示*** = nginx,那么,使用此选择器,您只能查找标签应用程序等于nginx的那些pod。

Selector-Based选择器:此类型的选择器允许根据一组值过滤键。因此,换句话说,基于Selector的选择器将查找已在集合中提及其标签的pod。

示例:***设您的标签键在(nginx,NPS,Apache)中显示应用程序。然后,使用此选择器,如果您的应用程序等于任何nginx,NPS或Apache,则选择器将其视为真实结果。

渗透攻击的测试步骤

1.如果原始值为2,我们使用(1+1)或(3-1),程序作出相同回应,表明易受攻击

2.如果单引号被过滤掉,我们可以用ASCII命令,使它返回字符的数字化代码,如51-ASCII(1)

3.在URL编码中,和=用于链接名称/值对,建立查询字符串应当分别使用%26和%3d进行编码

4.如查询字符串不允许使用空格,使用+或%20编码

5.分号被用于分割cookie自读,使用%3d编码

2021面试网络工程师的题目相关 文章 :

★ 关于网络工程师的面试题有哪些

★ 网络管理员面试题及答案大全

★ 最新的运维工程师面试题目整理

★ 网络测试工程师面试题及答案

★ 计算机网络面试题及参考答案

★ 网络工程师面试自我介绍范文五篇

★ 面试网络技术工程师的有哪些提问

★ 最新的it运维工程师面试题整理

关于网络基础面试题及答案和网络基础面试题及答案大全的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码