自我介绍
2. 介绍一下 DCache
3. DCache
的路由是怎么做的,用的什么路由算法?
4. MySQL
数据库怎么做高可用?
5. 如果 MySQL
数据库的容量比较大,怎么做索引?
算法
1. 递归的时间复杂度是怎么算的?
- 不太会,应该是用递推函数算的吧
- 你们没学《算法导论》吗?
- 还真没学
- 这么经典的没学?
2. 介绍一下快速排序的思想
3. 如果现在有一个百万级的数组,想要找出其中最大的一百个,用什么算法?
- 堆排序
- 堆排序的时间复杂度是多少?
log(N)
- 你确定?
操作系统
1. 操作系统中的并发会导致什么问题?如何解决?
2. 锁都有哪些种类?区别是什么?
3. 跨机同步如何解决?
Redis
分布式锁
4. Redis
是单线程还是多线程的?
- 处理读写请求的时候是单线程的,但也有多线程地处理其他命令
5. 为什么 Redis
这么快?
- 使用了
IO
复用,而且单线程地处理已经足够快了,多线程的话还需要考虑同步和加锁的问题,反而会导致效率低下 - 只答对了一半,还有个原因是因为
Redis
是纯内存的数据库 - (之前被某个面试官怼过,如果将
MySQL
也放到内存里跑,那Redis
的优势在哪,然后就忘了这个了)
6. 如何保证数据库和缓存之间的一致性?
7. 分布式协议了解多少?Paxos
和 Raft
?
- 介绍了一下
Raft
- 你们没学分布式这门课吗?
C++
1. 介绍一下 C++
的容器,vector
的数据是保存在哪里的?堆还是栈?
2. set
的底层数据结构是什么?
- 红黑树
- 是平衡二叉树吗?和普通平衡二叉树的区别是什么?
- 牺牲了平衡性,提高了插入删除的效率
3. C++
里面如何避免指针的滥用?
- 智能指针
总结
13号晚改完简历之后被秒锁,然后15号的电话面试。看到群里发的微信支付招聘要求里写着“要求基础良好”,体验了一番之后,果不其然,还是暑期实习面试时的被吊打,而且完全不聊实习期间的工作。面试官给出的结论是,还是有好好做过准备的,面经上有的问题都能答得很好,但基础还是不够扎实,实习时做的东西也是比较偏向于应用层,对底层不熟悉。过了不久还是熟悉地灰掉了呢。