今日头条、Face++开发岗面经
【头条】
一面:
自我介绍
介绍项目
写题:
两个栈实现一个队列、怎么优化
数组每一个元素找出数组右边第一个大于自己的数
实现LRU
二面
介绍项目
TCP四次握手
滑动窗口、窗口大小
线程与进程区别
什么是线程安全
乐观锁、悲观锁
进程间通信
管道怎么实现
左连接、右连接
索引、主键的区别
写题:
给定n,将1,2,,n按字典序排列,求第k大的数
三面:
求两个有序数组前K大的数
拓展:求m个有序数组前K大的数
设计一个带有有效时间TTL的KV存储系统,包含set(key,value,ttl)、get(key)方法、怎么优化
循环有序数组的二分查找
【Face++】
一周前面的,有些不记得了……
一面
自我介绍
项目介绍
写题:
2sum
能够获取最大值的栈
拓展:如果是队列怎么实现
已知长、宽的桌子,四角有洞,从一角以45°发射弹球,弹球一定会落入洞中吗?若一定,求弹球运行时间
二面
项目介绍
TCP三次握手、四次挥手
写题:
消除代码中的注释 /* ……*/ //……
简化路径 path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c"
三面
项目介绍
系统调用、一般的函数调用的区别
内核态、用户态区别
汇编角度C++函数调用的过程
写题:
链表排序,要求时间复杂度小于O(N^2),空间O(1),不允许改变链表的值