美团一二面后台开发凉经
一面 45min
- malloc
- 常用的内存分配器 jcmalloc ptmalloc
- 内存分配 怎么样保证内存分配?连续的?虚拟空间?
- 伙伴分配算法?分配的空间连续
- 散列表,-》 解决哈希冲突的办法 -》 头插法?
- 红黑树-》 红黑树算法思路? 着色?什么样的节点会标成红色?
- 排序算法-》 手写快排
- 最长能被target整除的子序列-》 暴搜
二面 1:20min
- 算法题:最长不重复子串
网络
- 上网输入url,传输的时候,包装成 ip 过程?域名解析服务器?两种策略? Ip层 把ip层包过来了
浏览器的server,会出现,建立链接后怎么到达对方的服务器?路由器?详细经过路由器的过程?怎么选择路由器? - Tcp连接后,数据传输时这样的数据过程?Tcp本身 收发机制?接收窗口,发送窗口?什么时候往前滑?服务端一串的消息串,什么时候会开始读? Tcp机制?
操作系统
- log,用户进程,代码是一行,到用户态的进程? Pagecache?中间有多少次数据交换?多少次的数据拷贝?两次的数据拷贝?都发生在哪里?如果把cache关掉的话,会牵扯到用户态,内核态拷贝了吗?数据拷贝到pagecache,什么时候会返回用户?真正刷到盘的时候,返回用户?还是到了pagecache?有什么保证数据不丢失的操作吗?
- 锁,syn锁,可重用的锁?公平,-》 严格按照次序来的,非公平锁-》 读操作可以尝试加锁的。机制上设计了非公平锁?应该不会导致锁被饿死的?有序?非公平锁肯定不会导致写被饿死?猜测一下如何实现?等待时间,堆,优先级?额外的开销,对锁有影响?每次增加锁,谁的优先级最高?
- 锁的性能,qps,纯加写锁,纯加读锁,读写锁1:1?怎么设计?1:1随机的?怎么保证这个线程加1次?单个线程加多次?线程开始时间,结束时间是同一时间吗?怎么计时的?锁里面?拿一个时间戳在资源里面进行?这个调用时间戳会对锁性能有影响吗?
感想
- 二面美团主管面试官,是我面试这么多体验最好的了。感谢!
- 上来写了道算法题,写完(写了二十分钟,一直有个点,没过去。面试官还让我debug),然后debug后,首先就跟我聊实习时间,没办法,我们实验室只能两三个月,部门不想招短期的,所以还问我面试要不要继续
- 继续呗,来都来了
- 面试一个流程下来,确实。。发现自己好多薄弱的点
- 哎,还是太菜了。。
- 这个锁的机制是真的不太懂,不知道怎么测锁的性能,非公平锁的实现,猜测了几种实现,面试官都不是很满意,但是他会跟我讨论,跟我聊,如果这样设计,有什么问题。。真的非常非常nice的一个面试官!
- 至今0oofer,等秋招把,太菜了。