二三月开始准备面试,三月低左右开始面试。我投了:
- 腾讯(事务型开发,一面挂),
- 快手(做了笔试,说我不合适)
- PingCAP(工具组,一面挂),
- 阿里云(DB相关, 正在处理中),
- 趣链科技(没回应),
- SmartX(没回应),
- 网易互娱(平台研发,已接受意向书)
腾讯事务型开发(三月底)
根据面试官介绍,事务型开发负责腾讯一些支付系统的开发和维护,主要语言是CPP和C++。
- 介绍一下raft。
- client连到一个非leader节点,怎么处理?
- 怎么实现线性一致读?
- OS讲讲调度
- HTTPS了解不?
- Linux熟悉吗?
- Linux下某天突然磁盘空间告急,怎么处理?
- 你对语言有什么想法吗(有没有语言偏好)
- 写一个链表翻转(迭代加递归)
- O(n)内找出所有元素下一个比它大的元素(单调栈)
快手
投了基础平台研发工程师,地点北京。
笔试:四题,只做了一题。第一题跟tx的类似,也是单调栈。第二题应该是DP,但是想不出。同学告诉我c++暴力就过了。。
过了几天,官网通知我不合适该岗位。
阿里云
群友内推了我,然后做测试题、做笔试。
笔试时间我搞混了,登陆的时候只剩下2分钟。。至今都不好意思跟内推人说。
内推人见我答题情况奇怪,私下考察我一番。3小时内做两题:
- 类JSON字符串的parser,当时没啥想法
- 10G整数外排序
至今为止,官网都显示“处理中”,没有下一步通知。
PingCAP(04-03)
负责为TiDB开发工具,比如MySQL到TiDB的数据迁移工具。
首先是HR面, 确认可以连续实习六个月以上。然后HR会发一道小作业,5天内做完挂到Github上。我的是在只使用1G内存,在100Gurl找出出现次数前10的url。
思路不难:堆排序 + 统计个数。统计用了HashMap,所以要防止HashMap太大(内存有限制)。事先要把100Gurl划分成若干个slot,并且保证相同的url一定要分到相同的slot里,这里按照url的哈希值取模。
写完了3月底交上去,可以说是“My program is complete mess,but it does its job”。
一面(04-03):
- 介绍一下raft
- 你说你了解分布式系统,你跟我说说最常见的两个技巧是什么?(partition 和 replication)
- 说说CAP定理,CP,AP,CA系统都有啥?(AP有Amazon的Dynamo,balabala。。)
- 你觉得分布式环境下的编程跟单机的编程有啥不一样?(并发+容错,没有全局时钟。。)
- 除了线性一致性,说说你还了解什么一致性(瞎答)
- 然后考了一些基础知识,这里忘了
- 说说2PC(瞎答)
- 2PC两个阶段具体干什么,2PC有什么弱点(瞎答)
- 做道题:词法分析,从一个字符串的前缀中解析出浮点数。比如s="1.2e-10....#&!*&LBWNB" -> "1.2e-10", 比较简单
面完我就暗叫不妙,果不其然1周后HR委婉地拒绝了。。哎
网易互娱(基础平台研发)
主要是搞k8s+容器。
一面(04-08)
1.介绍一下Raft(讲了十分钟,各个阶段都讲了,最后又总结一遍)
- Leader crash了,client怎么办?(通知client重连,或者系统内部重定向请求)
- 怎么提高读吞吐(两种方法:readIndex 和 lease)
- 讲一下进程、线程、协程的差异。
- 讲一讲三次握手,为什么要三次?
- Zombie进程?孤儿进程?
- 父goroutine被kill了,子goroutine被谁杀?(init进程)
- 说说buffer和cache,分别起到什么作用? (不确定这里问的是通用的概念还是linux里面的page cache。。)
- buffer和cache哪个大(不知道,面试官:我也不知道,随便问问的)
- HTTPS,TLS了解吗?不了解,回去看看
- 还有一些基础问题,忘了
没有靠算法,也没有安排笔试给我???(我同学:???)
二面(04-16)
面试大概1小时。
“先来个自我介绍吧!“然后没给我介绍的机会,就开始面试了。
面试内容不涉及计算机基础,考得比较开放。
- 讲一下云计算
- 你有租云服务器吗?讲一讲云服务的优势?(安全+可用性)
- 假设你手头上有个raft程序,客户要启动十台计虚拟机,怎么处理?(考虑到节点crash,分区问题)
面试官一步一步讲解和引导,最后你就有了一个k8s原型了。