字节、百度等大厂面经,资深服务端工程师谈跳槽感悟

2,397 阅读6分钟

今天大鹏请来一位大厂有 4 年工作经验的服务端资深工程师,在2020年多事之秋的节点,跟大家谈一下跳槽感悟,分享一下自己的面试经历

由于我之前在滴滴做的偏业务多一些,这次找的是一个技术方向,所以有点”转行”的感觉,说下这次找工作的几点感悟

  1. 不管做业务还是技术,有一点是相同的,就是一定要从一个方向负责人的角度去看问题。比如方向当前存在哪些技术/业务痛点,方向未来半年或者一年的技术/业务规划是什么,能够解决什么问题,业界目前有哪些优秀的系统可以参考并应用到当前方向内。其实这是让我们习惯从一个更高的角度去看问题,而不是别人安排我们做什么,我们就去做什么。

  2. 不要忽视平时的每一次努力,比如刷几道leetcode,学一套国外大学的公开课,写一篇技术文章。这些付出可能不会立即看到效果,但是一定会在未来的发展中起到作用。我2年前业余时间学的机器学习,就在这次面试中用到了。乔布斯在大学时旁听的一门课,10年后应用到了苹果电脑的设计中。有时间的同学可以看看乔布斯在斯坦福的这个演讲[1]

  3. 不管要不要换工作,每年都可以出去面面试。一是看看自己的水平如何,在市场上是一个什么价格,二是熟悉熟悉面试题,扩充自己的面试题库,三是看看自己当时的知识网络里有哪些薄弱点,可以查漏补缺。

  4. 对于做业务的同学,最好在工作中,挖掘几个可以写在简历上,或者是值得当做项目技术难题说给面试官听的点。这也回到了第一点,要有主动思考的能力。而且比较现实的一个问题是:即使我们做的业务很重要,但是如果说不出来技术难点,那也很难轻易打动面试官。

  5. 落袋为安。口头offer,或者hr谈完薪资,千万不要放松,就觉得自己找工作就结束了。因为谁拿谁当备胎,这都说不准。

  6. 心态。如果几次面试不过,千万不要气馁。可以安慰自己,不是自己不行,只是不适合。当然找完工作后,一定要清醒过来,可能真的是自己不行,平时要多努力 : )

平平无奇

C++

  • 智能指针的实现原理
  • 多态的实现原理[2]
  • C++11新特性[3]
  • memory-copy是什么[4]
  • unique_ptr实现原理
  • 介绍下boost库

计算机网络

  • nagle算法[5]
  • time_wait过多怎么解决[6]
  • close_wait过多怎么解决[7]
  • 拥塞算法[8]
  • HTTPS执行过程[9]
  • TCP 状-态机[10]
  • Dijkstra算法[11]
  • tcp no delay[12]
  • HTTP2.0[13]

golang

  • golang once实现
  • waitgroup实现
  • nocopy[14]
  • mutex设计思想[15]
  • mutex实现与演进[16]
  • mutex详细源码注释[17]
  • 为什么锁不能复制[18]
  • 结构体方法使用使用value和pointer[19]
  • silce实现[20]
  • atomic实现
  • golang调度
  • golang sync包
  • goroutine大致原理
  • golang垃圾回收
  • golang内存分配

计算机基本概念

  • 为什么计算机用2的补码[21]
  • 浮点数[22]

操作系统

  • 多核cpu和内存数据如何更新[23]
  • 自旋锁[24]
  • epoll[25]
  • cpu 伪共享[26]
  • 线程同步[27]
  • 进程同步[28]
  • CAS原理[29]
  • 内存屏障[30]
  • 伙伴系统[31]
  • epoll[32]
  • epoll 边沿触发和水平触发[33]
  • cpu load average[34]
  • 进程不同状态
  • 为什么L1 cache比L2 cache快
  • I/O多路复用,这个复用指的是什么[35]

算法

  • [螺旋数组] https://leetcode-cn.com/problems/spiral-matrix/
  • treap树
  • mutex 唤醒队列
  • 红黑树
  • LRU[36]
  • innodb lru[37]
  • LRU-K
  • bloom filter[38]
  • cuckoo filter[39]
  • KMP算法
  • LSM tree
  • 排序算法[40]
  • AVL树[41]
  • 快速排序[42]
  • 时间复杂度LOGN[43]
  • 堆排序[44]
  • 大数排序 TOPN[45]
  • HashedWheelTimer[46]
  • geohash[47]
  • m*n棋盘,多少种走法[48]
  • 倒排索引
  • mark-sweep垃圾回收算法[49]
  • 两个栈实现一个队列[50]
  • 单调栈[51]
  • trie树[52]
  • 单链表合并[53]
  • 删除链表倒数第K个节点
  • 线段树
  • 合并二叉搜索树[54]
  • 倒排索引 如何merge返回结果
  • 找出无序数组的中位数[55]

系统设计

  • 分布式事务[56]
  • 限流算法[57]
  • 一致性hash[58]
  • zookeeper[59]
  • zookeeper选举
  • CAP[60]
  • 如何判断死锁存在
  • 朋友圈设计[61]

redis

  • rehash[62]
  • kedis codis[63]
  • 跳跃表[64]
  • ziplist[65]
  • zset[66]
  • 如何保证数据不丢失 AOF RDB[67]

收藏点赞在看转发四连击

参考资料

[1]

演讲: https://www.bilibili.com/video/BV1Us411i7Ym?from=search&seid=119698512329459514

[2]

多态的实现原理: https://www.zhihu.com/question/58886592

[3]

C++11新特性: https://www.cnblogs.com/lidabo/p/7241381.html

[4]

memory-copy是什么: https://www.cnblogs.com/scut-linmaojiang/p/5283838.html

[5]

nagle算法: https://www.jianshu.com/p/f3840c0ca15e

[6]

time_wait过多怎么解决: https://coolshell.cn/articles/11564.html

[7]

close_wait过多怎么解决: https://blog.huoding.com/2016/01/19/488

[8]

拥塞算法: https://blog.csdn.net/liaoqianwen123/article/details/25429143

[9]

HTTPS执行过程: https://github.com/zhangyachen/zhangyachen.github.io/issues/31

[10]

TCP 状-态机: https://coolshell.cn/articles/11564.html

[11]

Dijkstra算法: https://www.jianshu.com/p/c9b27617502e

[12]

tcp no delay: https://blog.csdn.net/u014532901/article/details/78573261

[13]

HTTP2.0: https://www.zhihu.com/question/34074946

[14]

nocopy: https://medium.com/@bronzesword/what-does-nocopy-after-first-use-mean-in-golang-and-how-12396c31de47

[15]

mutex设计思想: https://zhuanlan.zhihu.com/p/75263302

[16]

mutex实现与演进: https://www.jianshu.com/p/ce1553cc5b4f

[17]

mutex详细源码注释: https://colobu.com/2018/12/18/dive-into-sync-mutex/

[18]

为什么锁不能复制: https://eli.thegreenplace.net/2018/beware-of-copying-mutexes-in-go/

[19]

结构体方法使用使用value和pointer: https://golang.org/doc/faq#methods_on_values_or_pointers

[20]

silce实现: https://halfrost.com/go_slice/

[21]

为什么计算机用2的补码: https://www.ruanyifeng.com/blog/2009/08/twos_complement.html

[22]

浮点数: https://github.com/zhangyachen/zhangyachen.github.io/issues/131

[23]

多核cpu和内存数据如何更新: https://juejin.cn/post/6844904013628964872

[24]

自旋锁: https://zhuanlan.zhihu.com/p/40729293

[25]

epoll: https://zhuanlan.zhihu.com/p/115220699

[26]

cpu 伪共享: https://colobu.com/2019/01/24/cacheline-affects-performance-in-go/

[27]

线程同步: https://cloud.tencent.com/developer/article/1129585

[28]

进程同步: https://cloud.tencent.com/developer/article/1129585

[29]

CAS原理: https://zhuanlan.zhihu.com/p/34556594

[30]

内存屏障: https://zh.wikipedia.org/wiki/%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C

[31]

伙伴系统: https://coolshell.cn/articles/10427.html

[32]

epoll: https://zhuanlan.zhihu.com/p/93609693

[33]

epoll 边沿触发和水平触发: https://zhuanlan.zhihu.com/p/93609693

[34]

cpu load average: http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html

[35]

I/O多路复用,这个复用指的是什么: https://zhuanlan.zhihu.com/p/115220699

[36]

LRU: https://juejin.cn/post/6844903982779875335

[37]

innodb lru: https://blog.csdn.net/u013164931/article/details/82423613

[38]

bloom filter: https://juejin.cn/post/6844903992749735950

[39]

cuckoo filter: https://coolshell.cn/articles/17225.html

[40]

排序算法: https://www.cnblogs.com/sunriseblogs/p/10009890.html

[41]

AVL树: https://blog.csdn.net/qq_25806863/article/details/74755131

[42]

快速排序: https://www.jianshu.com/p/a68f72278f8f

[43]

时间复杂度LOGN: https://juejin.cn/post/6844903481191432206

[44]

堆排序: https://www.cnblogs.com/chengxiao/p/6129630.html

[45]

大数排序 TOPN: https://blog.csdn.net/chikoucha6215/article/details/100855222

[46]

HashedWheelTimer: https://my.oschina.net/u/2457218/blog/3104605

[47]

geohash: https://blog.csdn.net/universe_ant/article/details/74785989

[48]

m*n棋盘,多少种走法: https://blog.nowcoder.net/n/b920bc564fdc41b1b7a7bfed2995d130

[49]

mark-sweep垃圾回收算法: https://blog.csdn.net/asd397325267/article/details/52668537

[50]

两个栈实现一个队列: https://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html

[51]

单调栈: http://www.zhuoerhuobi.cn/single?id=45

[52]

trie树: https://blog.csdn.net/forever_dreams/article/details/81009580

[53]

单链表合并: https://www.cnblogs.com/guweiwei/p/6855626.html

[54]

合并二叉搜索树: https://blog.csdn.net/qq_33240946/article/details/82421882

[55]

找出无序数组的中位数: https://blog.csdn.net/u010325193/article/details/87594895

[56]

分布式事务: https://coolshell.cn/articles/10910.html

[57]

限流算法: https://blog.biezhi.me/2018/10/rate-limit-algorithm.html

[58]

一致性hash: https://github.com/zhangyachen/zhangyachen.github.io/issues/74

[59]

zookeeper: https://www.jianshu.com/p/c7e8a370117d

[60]

CAP: https://blog.csdn.net/qq_28165595/article/details/81211733

[61]

朋友圈设计: https://www.jianshu.com/p/3fb3652ff450

[62]

rehash: http://redisbook.com/preview/dict/incremental_rehashing.html

[63]

kedis codis: https://www.cnblogs.com/wuwuyong/p/11774679.html

[64]

跳跃表: https://juejin.cn/post/6844903446475177998

[65]

ziplist: https://www.cnblogs.com/yuanfang0903/p/12165394.html

[66]

zset: https://www.cnblogs.com/yuanfang0903/p/12165394.html

[67]

如何保证数据不丢失 AOF RDB: https://www.cnblogs.com/chenliangcl/p/7240350.html

本文使用 👉mdnice 排版