很多同学都想得到滴滴出行的实习或者校招机会。那从过来人的角度谈谈,要通过滴滴出行的实习、校招面试,都有哪些经验和注意事项呢?今天就跟大家分享一下。以下答案仅是面试者个人观点,仅供参考。
一、单选题
1、如下哪一段代码不能给地址 0xaae0275c 赋值为 1?(B)
A. volatile int *p=(int *)0xaae0275c;*p=1
B. (volatile int *)0xaae0275c[0]=1
C. volatile int *p=(int *)0xaae0275c;p[0]=1
D. *(volatile int *)0xaae0275c=1
解析:运算符优先级的问题。
(volatile int *)0xaae0275c[0]=1 的意思是,先取出0xaae0275c地址处的值,然后把该值强制转换成int*类型,显然,该值是一个数值,不是变量,是右值,向该值再赋值1,就类似于 2=1; 这样的赋值,显然不对。 想改正确很容易,加上括号就OK了。 正确方式如下: ((volatile int *)0xaae0275c)[0]=1; 加上一对括号即可。
2、以下那种结构,平均来讲获取任意一个指定值最快? (D)
A. 二叉排序树 B. 队列 C. 栈 D. 哈希表
解析:因为哈希表,就是几乎是一一对应的,你输入一个数,立马出结果,不用搜索的,其他的都得搜索 哈希表是O(1) , 二叉树是logN,栈是N,最慢
3、一条 tcp 连接,主动关闭的一方不可能出现的连接状态是(A)
A. CLOSE_WAIT B. FIN_WAIT2 C. TIME_WAIT D. FIN_WAIT1
解析: 1)当客户端没有主动close的时候就断开连接,即客户端发送的fin丢失或者失败: 1:这时候若客户端断开的时候发送了FIN包,则服务端将会处于CLOSE_WAIT状态;2: 这时候若客户端断开的时候未发送FIN包,则服务端处还是显示ESTABLISHED状态
2) 当client想要关闭它与server之间的连接。client(某个应用进程)首先调用close主动关闭连接,这时TCP发送一个FIN M;client端处于FIN_WAIT1状态。
3) 当server端接收到FIN M之后,执行被动关闭。对这个FIN进行确认,返回给client ACK。当server端返回给client ACK后,client处于FIN_WAIT2状态,server处于CLOSE_WAIT状态。它的接收也作为文件结束符传递给应用进程,因为FIN的接收 意味着应用进程在相应的连接上再也接收不到额外数据;
4) 一段时间之后,当server端检测到client端的关闭操作(read返回为0)。接收到文件结束符的server端调用close关闭它的socket。这导致server端的TCP也发送一个FIN N;此时server的状态为last——ack.
5)当client收到来自server的FIN后 。 client端的套接字处于TIME_WAIT状态,它会向server端再发送一个ack确认,此时server端收到ack确认后,此套接字处于CLOSED状态。
4、哪种排序算法最坏情况下是最快的? (D)
A. 冒泡排序 B. 希尔排序 C. 归并排序 D. 快速排序
解析:快速排序的最坏运行情况是O (n²),比如说顺序数列的快排。 但它的平摊期望时间是O (n log n) ,且O (n log n)记号中隐含的常数因子很小,比复杂度稳定等于O (n log n)的归并排序要小很多。
5、下列不属于标准冯诺依曼计算机体系结构部件的是(A)
A. 寄存器 B. 控制器 C. 运算器 D. 输入与输出设备
解析:为了实现计算机的上述功能,计算机必须具备五大基本组成部件,包括:
- 运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。
- 控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的***处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。
- 存储器:用于记忆程序和数据,例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。
- 输入设备:用于将数据或程序输入到计算机中,例如:鼠标、键盘。
- 输出设备:将数据或程序的处理结果展示给用户,例如:显示器、打印机。
6、如果 downcast 是安全的(也就是,如果基类指针或者引用确实指向一个派生类对象)这个运算符会传回适当转型 过的指针。如果 downcast 不安全,这个运算符会传回空指针(也就是说,基类指针或者引用没有指向一个派生类这个是指 C++里的
A. dynamic_cast B. reinterpret_cast C. static_cast D. const_cast
7、math.h 的 abs 返回值 (C)
A. 不可能是负数 B. 不可能是正数 C. 都有可能 D. 不可能是 0
解析:因为负数的范围比正数大一个,比如8位的二进制,可以表示范围为-128~127
所以abs(-128)可能并不能表示为128,所以只能返回原值
8、arp 协议用了(A)
A. broadcast B. multicast C. unicast D. 以上选项都不正确
解析:ARP协议的工作原理,这里考察的是Linux在网络下的应用。unicast应是单播,broadcast是广播,multicast应该是多播。
9、大量在外部排序中使用的数据结构是(B)
A. hashtable B. B+Tree C. RB-tree D. skip list
10、若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句错误的是 1.p=s; 2.p=k; 3.p=s[0]; 4.k=s(A)
A. 124 B. 1234 C. 12 D. 234
解析:p=s; s+1一次移动的是10个字节,p+1一次移动1个字节
p=k; 与上同理。
k=s k+1一次移动3个字节 ,s+1个字节
所以 3.p=s[0]正确
11、若一序列进栈顺序为 e1,e2,e3,e4,e5,问存在多少种可能的出栈序列 (B)
A. 41 B. 42 C. 43 D. 44
解析:用卡特兰公式,C(2n,n)/(n+1),C(10,5)/6 等于42
12、IPv4 版本的因特网总共有多少有效 A 类地址网络 (D)
A. 255 B. 128 C. 256 D. 126
解析:A类IP地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个。
想要更多滴滴出行实习、校招的机会,请点击这里