搜狗2016研发工程师笔试题

搜狗2016研发工程师笔试题
https://www.nowcoder.com/test/961497/summary

1. 缓存系统中的主要使用的数据结构是()
  • 缓存系统中主要是:Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它 通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/ 值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信

  • 常用的缓存系统有:redis、memcached。它们的存储结构都是key-value类型的数据结构,而HashMap就是key-value结构

2. A,B两台机器都正常工作,B机器未监听任何端口.如果A机器向B机器80端口发送SYN包,会收到何种类型的回包?
  • 因为B机器未监听任何端口,A又向B的80端口发送了数据包,所以B不会建立连接,会异常结束建立连接,会发送RST包,如果是正常结束的话就会发送FIN包,RST是TCP连接中出现差错产生的,RST置1可以用来拒绝一个非法的报文段或拒绝打开一个连接

  • rst是复位报文 几种TCP链接中出现rst的情况 1.端口未打开 2,请求超时 3,提前关闭 4,在一个已关闭的socket上出现数据

  • RST复位报文段
    http://blog.csdn.net/renrenhappy/article/details/5929581
3. 选项代码中能正确操作数组元素的是()
int main(){
  int a[N][N]={{0,0},{0,0}};
  for(int i=0;i<N;i++){
     for(int j=0;j<N;j++){
       //访问二维数组a的值
       //选项代码
      }
    }
}
A. *(*(a+i)+j)=1
B. *(a[i]+j)=1
C. **(a+i)[j]=1
D. *((a+i)+j)=1

正确答案: A B

  • 数组名当被直接使用时,是一个指向数组首地址的指针。如果数组是多维数组,那么数组名是指向第一行数组的首地址,而不是第一行第一列单个元素的地址,所以*(a+i)与a[i]是一个意思,当直接用a[i]时代表的是该一维数组的首地址,所以*(a[i]+j)是与a[i][j]等效,所以AB选项正确
  • 举个例子说明:
    1. 数组指针:int (*p)[4];
      是一个指针,这个指针是指向一个长度为4的int型数组;
    2. 指针数组:int *p[4];
      []优先级高于,p先与[]结合成一个长度为4的数组,再与结合说明这个数组的每一个元素都是指向int型地址的指针。
  • C++中int *p[4]和 int (*q)[4]的区别
在linux+gcc下,关于以下代码,正确的是()
std::string& test_str()
{
   std::string str="test";
   return str;
}
int main()
{
   std::string& str_ref=test_str();
   std::cout<<str_ref<<std::endl;
   return 0;
}
A. 编译警告
B. 返回局部变量的引用,运行时出现未知错误
C. 正常编译且运行
D. 把代码里的&都去掉之后,程序可以正常运行

正确答案: A B D

  • 引用返回的是局部变量本身,而不是复制一份再返回,所以结果难以预料;其次返回局部自动变量是可以的,只要不是地址或引用就可以,否则需要将变量声明成static类型。
  • 返回指向局部变量的指针或引用
关于虚函数的描述正确的是()
A. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型
B. 内联函数不能是虚函数
C. 派生类必须重新定义基类的虚函数
D. 虚函数可以是一个static型的函数

正确答案: B

  • 题目有问题的。正确应该是这样的,虚函数是为了实现动态绑定,不能声明为虚函数的有:
    1、静态成员函数; 2、类外的普通函数; 3、构造函数; 4、友元函数
    此外,还有一些函数可以声明为虚函数,但是没有意义,但编译器不会报错,如:
    1、赋值运算符的重载成员函数: 因为复制操作符的重载函数往往要求形参与类本身的类型一致才能实现函数功能,故形参类型往往是基类的类型,因此即使声明为虚函数,也把虚函数当普通基类普通函数使用。
    2、内联函数:内联函数目的是在代码中直接展开(编译期),而虚函数是为了继承后能动态绑定执行自己的动作(动态绑定),因此本质是矛盾的,因此即使内联函数声明为虚函数,编译器遇到这种情况是不会进行inline展开的,而是当作普通函数来处理。因此声明了虚函数不能实现内敛的,即内敛函数可以声明为虚函数,但是毫无了内联的意义
  • c++ 深入理解虚函数
  • C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
32位/33MHzPCI总线的峰值带宽是多少?
A. 33MB/s
B. 4MB/s
C. 133MB/s
D. 266MB/s

正确答案: C

  • 本题考查总线带宽的计算。公式Q=W×F/N计算总线的数据传输速率Q(其中,W为总线数据宽度,即总线位宽/8;F为总线:工作频率;N为完成一次数据传送所需的总线时钟周期个数)。总线位宽为32位,总线工作频率为33.3MHz,PCI 1.0规范完成一次数据传送需1个总线时钟周期时,总线带宽Q133MB/s。正确答案为选项C。
  • 总线带宽
关于函数输入参数的正确描述都有哪些?()
A. 始终用const限制所有指向只读输入参数的指针和引用
B. 值传递只用于原始类型(int,float...)的输入参数
C. 优先按const的引用取得其他用户定义类型的输入
D. 如果函数需要修改其参数副本,则可以考虑通过值传递代替通过引用传递

正确答案: A C D

  • c++编程规范的纲要和记录
    37、 对于只做输入的参数:
    a) 始终用const限制所有指向只输入参数的指针和引用。
    b) 优先通过值来取得原始类型和复制开销比较低的值的对象。
    c) 优先按const的引用取得其他用户定义类型的输入。
    d) 如果函数需要其参数的副本,则可以考虑通过值传递代替通过引用传递。这在概念上等同于通过const引用传递加上一次复制,能够帮助编译器更好的优化掉临时变量。
一个长方体形状的盒子长、宽、高分别为20厘米、8厘米和2厘米,现在要用一张纸将其六个面完全包裹起来,要求从纸上剪下的部分不得用作贴补,请问这张纸的大小可能是下列哪一个?( )
A. 长25厘米、宽17厘米
B. 长26厘米、宽14厘米
C. 长24厘米、宽21厘米
D. 长24厘米、宽14厘米

正确答案: C

组成数字1到2,000,000的所有数字的各位的总和是
A. 55,000,002
B. 45,000,002
C. 2,000,001,000,000
D. 10,999,902

正确答案: A

先考虑000,000~999,999,共1,000,000个数,每个数字有6位,共6,000,000位数字,数字0到9出现次数相当,都出现了6,000,000/10=600,000次。
因此000,000~999,999所有数字之和为(0+1+2+…+9)*600,000=45*600,000=27,000,000
1,000,000到1,999,999 再加上最高位的1,000,000个1即可,所以组成数字1到2,000,000的所有数字的各位的总和是:
27,000,000+27,000,000+1,000,000+2=55,000,002

两个人两个小时能组装两辆自行车,要在6小时内组装12辆自行车,需要多少人?
A. 2
B. 3
C. 4
D. 5

正确答案: C

在Logistic Regression 中,如果同时加入L1和L2范数,会产生什么效果()
A. 可以做特征选择,并在一定程度上防止过拟合
B. 能解决维度灾难问题
C. 能加快计算速度
D. 可以获得更准确的结果

正确答案: A

L1范数是指向量中各个元素绝对值之和,用于特征选择;
L2范数 是指向量各元素的平方和然后求平方根,用于 防止过拟合,提升模型的泛化能力
L1与L2区别:使用L1可以得到稀疏的权值;用L2可以得到平滑的权值
机器学习:L1与L2正则化项

在分类问题中,我们经常会遇到正负样本数据量不等的情况,比如正样本为10w条数据,负样本只有1w条数据,以下最合适的处理方法是()
A. 将负样本重复10次,生成10w样本量,打乱顺序参与分类
B. 直接进行分类,可以最大限度利用数据
C. 从10w正样本中随机抽取1w参与分类
D. 将负样本每个权重设置为10,正样本权重为1,参与训练过程

正确答案: A C D

解决这类问题主要分重采样、欠采样、调整权值
1. 重采样。
A可视作重采样的变形。改变数据分布消除不平衡,可能导致过拟合。
2. 欠采样。
C的方案 提高少数类的分类性能,可能丢失多数类的重要信息。
如果1:10算是均匀的话,可以将多数类分割成为1000份。然后将每一份跟少数类的样本组合进行训练得到分类器。而后将这1000个分类器用assemble的方法组合位一个分类器。A选项可以看作此方式,因而相对比较合理。
另:如果目标是 预测的分布 跟训练的分布一致,那就加大对分布不一致的惩罚系数。
3. 权值调整。
D方案也是其中一种方式。
http://blog.csdn.net/ztf312/article/details/50893967

使用一个长度最大为150的队列,对满二叉树进行广度优先遍历时,能够容纳的二叉树的最大深度为()(第一层深度为1)
A. 8
B. 10
C. 9
D. 7

正确答案: A

满二叉树每一层的结点个数为(第一层深度为1)第n层的节点数:2^(n-1),如果使用150的队列进行广度优先遍历,
则每一层的节点数不大于150,2^(n-1)≤150,2^7=128,2^8=256,n-1最多为7,所以最大深度n=8.

对以下数据结构中data的处理方式描述正确的是()
struct Node
{
   int size;
   char data[0];
};
A. data将会被编译成一个char *类型指针
B. 全部描述都不正确
C. 编译器会认为这就是一个长度为0的数组,而且会支持对于数组data的越界访问
D. 编译器会默认将数组data的长度设置为1

正确答案: C

struct中char data[0]的用法
C/C++ 中的0长数组(柔性数组)

在HMM中,如果已知观察序列和产生观察序列的状态序列,那么可用以下哪种方法直接进行参数估计()
A. EM算法
B. 维特比算法
C. 前向后向算法
D. 极大似然估计

正确答案: D

EM算法: 只有观测序列,无状态序列时来学习模型参数,即Baum-Welch算法
维特比算法: 用动态规划解决HMM的预测问题,不是参数估计
前向后向:用来算概率
极大似然估计:即观测序列和相应的状态序列都存在时的监督学习算法,用来估计参数

幼儿园10个小朋友排成一列,其中3个小朋友是女孩,求女孩排在一起的概率是()
A. 1/18
B. 1/6
C. 1/15
D. 1/10

正确答案: C

所有人排列的情况是10! 把三个小女孩看做整体排列是8! 三个小女孩排列是3!
最后结果就是 (8!X3!)/10! 消除8!就是 3!/(10X9) 就是1/15

STL中的unordered_map和priority_queue使用的底层数据结构分别是什么?()
A. rbtree,queue
B. hashtable,heap
C. rbtree,heap
D. hashtable,queue

正确答案: B

  • unordered_map:是所谓的哈希map,很容易就选了hashtable
  • priority_queue:是所谓的优先级队列,说白了就是一个二叉堆,所以底层应该是用heap实现,并非名字中的queue
  • map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操作,故红黑树的效率决定了map的效率。
平面上平均每4个单位面积有一个染色点,观察一定面积上的点数X,X近似服从()
A. 均匀分布
B. 泊松分布
C. 二项分布
D. 正态分布

正确答案: B

泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生率。 泊松分布适合于描述单位时间内随机事件发生的次数。(来自百度百科)
这里某个单位面积有染色点可以看做是个随机事件,而在一定面积上观察这个一定面积可以看做是单位时间

对一个由A,B,C,D随机组成的序列进行哈弗曼编码,据统计,各个元素的概率分别为:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,请问该编码的平均期望编码长度为()bits?
A. 1.45
B. 1.7
C. 1.85
D. 1.92

正确答案: C

https://www.nowcoder.com/test/question/done?tid=10719919&qid=16034#summary

下列不是SVM核函数的是

`
A. 多项式核函数
B. logistic核函数
C. 径向基核函数
D. Sigmoid核函数

正确答案: B

https://www.nowcoder.com/test/question/done?tid=10719919&qid=7173#summary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值