您的位置:首页 > 职场人生

bat面试题总结

2016-03-21 00:53 513 查看
 一 不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)

  1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)

  A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA

  根据先序遍历和中序遍历能唯一确定二叉树:



  注意:要想唯一确定一颗二叉树,必须已知两种遍历,并且其中必须有中序,因为先序和后序不能确定左右子树,如下图所示:



  从上图中我们可以看出,没有中序是不能确定一颗树的!

  2 下列哪两个数据结构,同时具有较高的查找和删除性能?(CD)

  A.有序数组 B.有序链表 C.AVL树 D.Hash表

  数组的删除性能比较差,而链表的查找性能比较差!

  3 下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)

  A.快速排序 B.堆排序 C.归并排序 D.冒泡排序

  快排和冒泡排序在最坏情况下的时间复杂度是O(n^2);

  4 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A)

  A.8 3 2 5 1 6 4 7

  B.3 2 8 5 1 4 6 7

  C.3 8 2 5 1 6 7 4

  D.8 2 3 5 1 4 7 6

  建立小根堆的过程如下图所示:



  5 当n=5时,下列函数的返回值是:(A)

  A.5 B.7 C.8 D.10

  6 S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C)

  A.37.5% B.32.5% C.28.6% D.26.1%

  3*0.01% /( 3*0.01%+5*0.015%)=28.6%

  7 Unix系统中,哪些可以用于进程间的通信?(ABCD)

  进程间通信主要包括管道, 系统IPC(包括消息队列,信号量,共享存储), SOCKET.

  A.Socket B.共享内存 C.消息队列 D.信号量

  8 静态变量通常存储在进程哪个区?(C)

  A.栈区 B.堆区 C.全局区 D.代码区

  栈区一般用于存储比较小的临时变量;

  堆区一般用于存储比较大的临时变量;

  代码区用于存储代码;

  全局区用于存储全局变量,静态变量等。

  9 查询性能(B)

  A. 在Name字段上添加主键

  B. 在Name字段上添加索引

  C. 在Age字段上添加主键

  D. 在Age字段上添加索引

  如果经常依据特定的字段搜索表或对表的记录进行排序,则可以通过创建该字段的索引来加快执行这些操作的

  10 IP地址131.153.12.71是一个(B)类IP地址。

  A.A B.B C.C D.D

  A类:0打头

  B类:10打头

  C类:110打头

  D类:1110打头

  11 下推自动识别机的语言是:(C)

  A. 0型语言 B.1型语言 C.2型语言 D.3型语言

  参考:维基百科

  12 下列程序的输出是:(D)

  5*3+4=19

  A.23 B.35 C.16 D.19

  13 浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)

  A 找不到该页面

  B 禁止访问

  C 内部服务器访问

  D 服务器繁忙

  14 如果某系统15*4=112成立,则系统采用的是(A)进制。

  A.6 B.7 C.8 D.9

  逐个带入即可:

  对于6进制而言:15的十进制就是11;112的十进制就是44,11*4=44。

  15 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:(A)

  A a(000) b(001) h(01) i(10) o(11)

  B a(0000) b(0001) h(001) o(01) i(1)

  C a(000) b(001) h(01) i(10) o(00)

  D a(0000) b(0001) h(001) o(000) i(1)



  16 TCP和IP分别对应了OSI中的哪几层?(CD)

  A Application layer

  B Presentation layer

  C Transport layer

  D Network layer

  TCP是传输层协议

  IP是网络层协议

  17 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?(C)

  A.EDCBA B.DECBA C.DCEAB D.ABCDE

  A:全部入栈后出战

  B:ABC入栈,D入栈然后出栈,E入栈然后出栈

  C:不可能,

  D:A入栈然后出栈,B入栈然后出栈,...

  18 同一进程下的线程可以共享以下?(BD)

  A. stack B.data section C.register set D.file fd

  每个线程包括:

  线程状态: 线程当前的状态。

  一个执行栈

  私有的数据区: 用于每个线程局部变量的静态存储空间

  寄存器集: 存储处理器的一些状态

  19 对于派生类的构造函数,在定义对象时构造函数的执行顺序为?(D)

  1:成员对象的构造函数

  2:基类的构造函数

  3:派生类本身的构造函数

  A.123 B.231 C.321 D.213

  20 如何减少换页错误?(BC)

  A 进程倾向于占用CPU

  B 访问局部性(locality of reference)满足进程要求

  C 进程倾向于占用I/O

  D 使用基于最短剩余时间(shortest remaining time)的调度机制

  SRT算法(SPN算法的抢占式版本):总是选择剩余时间最短的进程运行。

  因为时间短的结束运行快,不需要频繁切换进程(导致刷新内存),所以换页错误发生的概率就减少了

  21 递归函数最终会结束,那么这个函数一定?(B)

  A 使用了局部变量

  B 有一个分支不调用自身

  C 使用了全局变量或者使用了一个或多个参数

  D 没有循环调用

  22 编译过程中,语法分析器的任务是(B)

  A分析单词是怎样构成的

  B 分析单词串是如何构成语言和说明的

  C 分析语句和说明是如何构成程序的

  D 分析程序的结构

  23 同步机制应该遵循哪些基本准则?(ABCD)

  A.空闲让进 B.忙则等待 C.有限等待 D.让权等待

  24 进程进入等待状态有哪几种方式?(ABCD)

  A CPU调度给优先级更高的线程(运行态转为就绪态)

  B 阻塞的线程获得资源或者信号(阻塞态转为就绪态)

  C 在时间片轮转的情况下,如果时间片到了(运行态转为就绪态)

  D 获得spinlock未果(运行态转为就绪态)

  25 设计模式中,属于结构型模式的有哪些?(BC)

  A 状态模式 B 装饰模式 C 代理模式 D 观察者模式

  26、根据以下代码?

  int ack(int m,int n)

  {if(m == 0)

  return n + 1;

  else if(n == 0)

  return ack(m-1,1);

  else

  return ack(m – 1 , ack(m , n-1));}

  如果ack(3,3),。结果为多少

  27、请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。

  28、A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。

  我的回答的:如果对于数据较小(10W以下)我会采取哈希的方法去求数集较小的那个集合的hash值存在hash表中,然后对另一个表中每一个数进行hash,如果在hash表中找到则这个数是交集的数,输出。这个算法时间效率是O(n+m),空间效率O(3n+m);(因为hash几乎浪费掉一半空间)

  对于大数据,我则先把数据hash%100的样子分到许多个小文件中,然后对这些hash值的次数建立一颗二叉查找树,遍历另一个集合的数来找,找到一个就输出一个,最后得到集合数。算法效率是O(n/100*m*log(n/100)),空间效率O(n+m)

  29、怎么在linux下查找一个文件中有多少个给定的字符串

  答:这题本来想考察我的shell编程的能力吧,不过我说这个不会,然后他问我如果写程序实现呢

  我答我会用trie树去记录字符串出现的次数

  然后有被问道更深入一点的,如果文件过大呢?

  我答,那就把文件内容hash取模分成多个足够小的文件,然后每个小文件trie记录结果,输出一个小文件,最后把所有结果文件合并就可以得到最终结果

  30、写二叉查找树的查找算法,答案就不写了,简单。

  写完之后,面试官又问我由这里到一个什么地方的,要求最短时间,怎么求

  这个就是问最短路算法,我就答了这个,然后他又问我怎么知道去的路径通不通,我答用传递闭包去计算,

  他问我如何传递闭包,然后我就画图演示了一下这个过程

  31、进程与线程的区别

  这题我答得非常不好,我只答了进程有资源,线程没资源,进程个数有限,而线程的个数几乎不限,进程的调度慢,线程的调度快这些基础点

  但是被问到为什么进程调度比线程慢时,我答不出,我答是因为用户态和内核态的转换造成的,但是百度一下,答案应该是因为线程调度是在进程中进行,在同一存储区内操作,而进程则在不同存储区操作,所以进程调度数度比线程慢

  32、问我TCP/IP有多少层

  我答OSI标准有7层,但是目前工业大多使用5层的标准,然后回答了一下这些标准,我只会答5层标准的那一个。。。

  接着又问我IP层(网络层)的作用,

  我答了很多,又说了什么TCP、UDP的,然后在面试官的知道下,我才答出,网络层的作用是映射作用,主要是IP和MAC地址、端口的映射(我不知道对不对。。)

  接着又问我TCP和UDP的区别

  我就答,TCP是有连接的,UDP是无连接的,TCP通过三次握手保证数据的可靠性,UDP则没有

  最后还问我滑动窗口的东西,我就答了滑动窗口是为了保证数据被客户端正确接收了,他又问我为什么能保证,然后我就画图演示滑动窗口的发送、接收、移动过程

  33、写一个函数,计算给定的一个整数中有多少个0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: