一面 8.21
上来做了一套卷子,然后做了三道编程题
第一题卖股票,差分后求最大子序和,做复杂了,只用记录历史最低股票价格就行
第二题LRU 没写完
第三题 O(lgn)复杂度排序链表 快排的没写出来,没时间了写了个归并排序的框架没跑
二面 8.26
首先做算法题 用两个队列实现一个栈
说的思路比较lj,没想到好办法
就用一个队列保存出栈顺序的,当要入栈一个元素时,先把队列A中出栈序列放到队列B中,然后A中入队该元素,再把B中元素入到队列A中,这样A中始终保存的就是栈的出栈顺序。
算法题二:
找链表的环的入口节点
快慢指针 一个移动一格,另外一个每次移动两格,相遇之后,一个慢指针从链表头出发,另外一个从交点出发,相遇点就是入口节点。主要面试官问我为什么?我画图解释半天后面那个原理,然后要让我数学推导。再问我如何设置快指针的速度,让慢指针移动的最少就能找到相遇的节点,问
v
a
=
k
∗
v
b
v_a = k * v_b
va=k∗vb问这个k的关系。
推的关系式应该是与环和前面平的长度成正比的
k
=
x
c
l
+
1
k = x\frac{c}{l} +1
k=xlc+1这个关系式类似的,然而并不知道面试官到底想问什么。不知道这些个长度怎么设置速度啊,知道的话还找个屁入口节点。这道题前前后后花了20分钟,感觉凉了。腾讯感觉特别喜欢问算法题。
然后后面面试官感觉就没什么兴趣了,问了下TCP三次握手和四次挥手还有流控。问了个问题三次握手中客户端对服务器的SYN的ack服务器没有接收到会怎么样,然后再问了下操作系统进程和线程的区别。
30min后流程黑了。