滴滴出行-研发工程师-笔试经验

以下内容来自于应聘者回忆整理

很多同学都想得到滴滴出行的实习或者校招机会。那从过来人的角度谈谈,要通过滴滴出行的实习、校招面试,都有哪些经验和注意事项呢?今天就跟大家分享一下。以下答案仅是面试者个人观点,仅供参考。

一、单选题

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个。 

想要更多滴滴出行实习、校招的机会,请点击这里

  • 1、刺猬实习遵循行业规范,任何转载的稿件都会明确标注作者和来源
  • 2、刺猬实习的原创文章,请转载时务必注明"来源:刺猬实习",不尊重原创的行为刺猬实习或将追究责任
  • 3、作者投稿可能会经刺猬实习编辑修改或补充。

相关推荐