1.上来就是一道算法题,大概就是随机一个c数出来,a和b两个人各有一个数字,看这个手上的数字和c差值,相同差值b赢。已知b的数字和数字最大上限,求a等于多少获胜概率最大
懵逼了,谁想到是道思维题啊。过了十分钟说不会做。
2. inline函数?直接在代码展开了,不需要出栈和进栈所以速度快,但是也会占更大的空间。inline函数里面不能有for循环和递归。谷歌规范,inline函数里10行为最佳。在对比一下define函数
3. 栈区和堆区的区别?栈区更容易写进寄存器里,因为地址是连续的,CPU有预读功能,可以读一行数据。堆的空间不连续更连续
4. 以前是没有堆区的,为什么需要堆区?扯到链表去了,说这种结构不需要连续空间。面试官告诉我,差不多把,因为不是所有数据都需要先进后出
5. 内存模型都有什么区?栈区、代码区、堆区、静态存储区
6. stl用过吧?vector、list、deque,面试官绝对是个大佬,deque底层都感觉研究明白了。
7. map和unordered_map区别?map是红黑树,红黑树根和孩子节点是黑色,两红色节点不能相邻,有左旋、右旋、变色操作,而且中序遍历也是有序的。unordered_map哈希冲突,开链法或者扩容解决,时间复杂度是O(1)的。需要排序的话就首先选红黑树
8. 哈希是无序的,那我想让他保证插入删除的顺序呢?LRU算法思想讲一遍就行(lc原题)
9. 洗牌算法?我问考虑多发好牌吗?不考虑,简单就行?假如斗地主,那就第三个人随机发17张,更新牌堆信息。
10. 广度和深度怎么做?巴拉巴拉
11. 深度不让你递归你怎么办?那我就广度优先遍历拉。。。
12. M个苹果N个盘子的有多少种摆法,允许空盘?dfs+回溯思想
13. udp和tcp的区别?tcp字节流、udp数据报,udp会被ip分片。tcp的流量控制、拥塞控制、快重传、超时重传简单介绍介绍
14. time_wait作用?保证服务端的FIN有个响应,别客户端发完ACK但是ACK丢了,服务端重传FIN发现崩了。还有避免老的连接
15. 游戏排行榜怎么做?我问可以借助redis这种东西吗?可以的,那就跳表去做吧
16. 跳表是啥?简单介绍了一下就是个带索引的链表,比红黑树实现简单一些,那会我也看了下跳表的缺点,插入太多元素会造成索引效率降低。
17. 如何判断链表有环?快慢指针
18. 两个有序数组merge成一个
19.select和epoll区别?这区别闭着眼睛都能背出来了。
没反问,听面试官意思这面过了可能就发offer?面试体验还是蛮不错的,除了第一道题目没绕明白。
全部评论
(2) 回帖