先说下个人情况,23应届硕士毕业生,本硕双非,非科班,均为计算机相关专业,求职方向:Go 后端开发

这篇文章呢,三个方向来说

  1. 对正在学习 Golang 的同学,提供一些学习和面试上的经验
  2. 对自己,做一个小的总结
  3. 对其他相关或无关行业,有兴趣的话,看个乐呵吧

本人秋招,表格记录在案,投递了有六十多家公司(其实远不止,曾经摆烂,点击过一键投递,投了很多不太匹配的岗位)

先自问自答几个问题

一、为什么选择 Go?

觉得 Java 太卷,八股文内容太多,卷不过,看到很多大厂(其实就是字节)Go 需求很大,认为 Go 前景很好,想弯道超车,直接学 Go 进大厂,研二开始 all in Go,之前是 Python。

二、学习路线是什么,或者说使用哪些资料学习 Go?

大致学习路线(非严格按照以下顺序):

  • 哔哩哔哩 - 8小时转职Golang工程师
  • 《Go Web编程实战派:从入门到精通》
  • 极客时间-Go语言核心36讲
  • Geektutu (极客兔兔)
  • 《Go语言编程之旅》
  • 《Go 语言设计与实现》

二、投递企业类型有哪些?

私企为各大互联网公司,后期每天都会看牛客网求职页面,海投,下面会有详细介绍

国企主要是 银行 和 运营商,由于一心想去互联网公司,国企是报着尝试的心态去投递的,银行都投的总行,导致一场笔试都没有,害,我的简历过不了也很正常。

三、感觉 Go 的优劣势分别在哪?

优势:Go 的 八股内容体系不大,知识点问来问去就那几个,后面会讲到

劣势:中小厂对 Go 的需求较小,并且,Go 的竞争也是挺激烈的。另外,国企的信息科技岗需求主要为 Java,Go 岗位非常少,所以投国企很吃亏,如果想进国企的信息技术岗还是推荐学 Java,当然多少还是有一些,比如 兴业数金 和 中国人寿,是有 Golang 开发工程师这个岗位的。

三、秋招结果如何?

Go 相关岗位 5 家公司给面试,全军覆没

最后签了广东一家公司做测开,待遇和各项福利都很不错,除了离家有点远,其他自己都很满意了。

四、觉得自己哪些方面做的不到位?

主要是两方面做的不好,一是没有实习,项目显得有些 demo ,有实习的话,其实不会这么惨

二是投简历太晚,我是九月中旬才投的第一份简历,十一过后才迎来第一场面试,到了十月底,还在投简历,八股准备的也很晚,总想准备好后才投简历,

很大的原因是学校研二下没开学,自己在家学校效率很低,也不是说想给自己找理由,只是觉得如果开学的话,我做的应该会比在家好很多。

相应地,给同学们两点建议:

  1. 条件允许的话一定要去找实习
  2. 早投简历,提前批一开始就可以投,多积累面试经验,让自己紧张起来

问答结束。

下面列出我投递的 Golang 相关岗位,给 Go 方向同学提供一些参考,格式:公司 — 岗位名

  1. 360 — 服务端开发工程师-Golang
  2. 奇安信 — 服务端开发工程师-Golang
  3. 滴滴 — 后端研发工程师(Golang/Java/C++/PHP)
  4. 小米 — 软件开发工程师-Golang方向
  5. 快手 — Golang 开发工程师
  6. 完美世界 — C++/Golang开发工程师
  7. 蚂蚁集团 — 研发工程师Golang/Python
  8. 深信服 — Go语言开发工程师
  9. 大华 — 【研发中心】2023届Golang开发工程师(J17977)
  10. 得物APP — Golang开发工程师(上海)
  11. 美团 — 后端开发工程师
  12. 祖龙娱乐 — Go游戏服务器开发工程师(北京)
  13. 希望学 — 服务端Golang开发工程师
  14. 高仙机器人 — 后端开发工程师-Golang方向
  15. 百度 — 北京-C++/PHP/Go研发工程师(J48055)
  16. 斗鱼 — 服务端开发工程师(Golang)
  17. 海能达 — Golang软件工程师
  18. 同花顺 — Golang开发工程师-认证中心
  19. 字节跳动 — 后端开发工程师
  20. 闪送 — Golang开发工程师(运力体系)
  21. 中国人寿 — 软件开发岗-Golang方向
  22. 联想 — Golang开发工程师-Lenovo Research
  23. 红海无限 — 后端开发工程师
  24. Aibee — 后端开发工程师-Golang
  25. 58集团 — 后端开发工程师-北京
  26. 兴业数金 — Golang开发工程师
  27. 欧科云链 — Golang开发工程师
  28. 高途 — Golang开发工程师
  29. 小丑鱼 — 后端开发工程师
  30. 北森 — 后端开发工程师
  31. 孩子王 — Golang 开发工程师

总共参加了24场笔试,不限于以上列出的 Golang 开发岗,

笔试 就是计算机基础知识:计算机网络、数据结构、操作系统、Linux、MySQL

Golang 方向的选择题知识点:channel、select、接口、变量声明、指针运算、web 框架

编程题的话,也就是 模拟、动态规划、图论、回溯、二叉树,遇到过一些LeetCode原题,如:无重复字符的最长子串、爱吃香蕉的珂珂、二叉树的最近公共祖先、验证回文串

小米 和 360 的笔试给我印象很差,我投的 Golang 岗,结果选择题一堆 Java题

美团和字节的笔试是只有编程题的,很考验算法能力。

下面是我面试过程中遇到过的问题,主要说 Go 这块,其他方向的问题放在一起

Go:

  • 进程、线程 和 协程 的区别
  • make 和 new 的区别
  • Go 为什么字段和方法分开写?优势是什么?知道韩束接收器吗
  • 了解 Go 的错误类型吗?具体讲讲
  • recover 可以捕获子 goroutine 的 panic 吗?不能的话,该如何解决呢
  • 基本类型中哪些是值类型,哪些是指针类型
  • 讲一下 channel?
  • 如何理解“不要通过共享内存来通信,而应该通过通信来共享内存”
  • channel 长度为 0 的情况,具体讲讲
  • channel 内部结构是什么
  • 了解 Go 的单元测试吗
  • 讲讲哈希表处理冲突的方法, map 底层数据结构
  • Go map 的扩容机制
  • Go 的 GC 讲一下
  • 讲一下 defer
  • 什么情况下会引发 panic
  • 了解内存泄漏吗?在 Go 中,那些情况会引发内存泄漏

其余科目问题:

  • 讲一下研究生阶段的研究方向
  • 讲一下项目(针对项目,问如何做参数校验,jwt讲一下,中间件如何实现,jwt 签名是明文传输吗,前缀树如何实现)
  • 说说常见状态码
  • http request 都包含哪些信息
  • 讲一下 HTTPS 加密过程
  • TCP 和 UDP 的区别讲一下
  • TCP 三次握手讲一下,为什么断开连接是四次挥手,比建立连接多一次,time-wait 状态作用是什么
  • 流量控制 和 拥塞控制
  • 数据库索引如何优化?
  • MySQL 事务特性
  • 索引是有序的好,还是无序的好?(这个问题我不是很理解)
  • 数据库都有哪些隔离级别
  • 讲讲 MVCC,读已提交和可重复读分别如何实现
  • 快照读 和 当前度 的区别是什么
  • having 和 where 分别用在哪里?having 可以替代 where 吗
  • 了解RPC吗?讲一下
  • Put 和 Patch 的区别
  • 操作系统有哪些页面置换算法
  • Redis 一致性hash算法

主要还是八股,面试过程中,我有提到过我个人算法能力较强一些,对方会让我挑一个算法具体讲讲,然后结合实际场景有什么用途,两次面试中都是这么问的,我一下子有点不知道该怎么回答,第一次讲的动态规划,第二次讲的回溯。

这里是我认为总结的比较好的文章:

Go:

MySQL:

计算机网络:

Linux:

上面我列出来的文章都是我认真看过的,非常推荐,另外,牛客上面经也可以多看看,而且,最好秋招前几个月就开始看,我是吃了这块的亏。

Go 方向的同学,还推荐关注下 幼麟实验室,B站 和 知乎 同名,视频讲的挺好,需要一定的知识储备。

《Go语言设计与实现》这本书,针对面试重点看第二部分,基本是必问的,另外,内存逃逸、三色标记法 和 内存泄漏 也很常考点。

数据库和计算机网络的八股网上内容很多了,自己再总结一下,理解性地记忆就可以了。话说,面字节的时候,面试官都夸我计网的问题回答地标准又全面,结果,到了操作系统和Redis,我就原形毕露了,这两块我了解很少。

关于算法,首先,各种排序算法的最优、最差 和 平均时间复杂度一定要记清楚,挺容易被问的,答错会很扣分,算法题的话,没啥说的,刷 LeetCode,我个人是 400+,《剑指offer》刷了有三四遍,很可惜这几场面试只有一场需要做算法题,让我感觉自己花费大量时间刷题失去了意义。

极客兔兔 的 代码输出题也不要忽视,面深信服的时候遇到了这类题,犯了低级错误,很不应该,它的 三色标记法、逃逸分析 和 内存泄漏 都写的很好,应付面试是足够的。

幼麟实验室的 闭包、继承、map 原理和扩容机制、channel 数据结构、Context 和 协程 都讲得很好,不理解的话建议重复看几遍。

我简历的项目是照着网上现有的项目跟着做的,一个来自《Go语言编程之旅》,另一个是 极客兔兔,自己没有去新增功能,确实过于 demo 了。

关于面试的心态,前几场面试前都是非常紧张的,老是想着哪个知识点好像还没掌握好什么的,慢慢面多了心态会好很多(哭o(╥﹏╥)o,自己面试还是太少了)。

都说今年互联网寒冬,具体到我个人身上,就是希望面试机会能够多一些,很多公司投简历就是石沉大海,还有一些公司,笔试做的自认为很不错了,算法题也都 ac 了,但就是等不到面试通知,如果能多给一些面试的话,我觉得自己是有机会拿到 Go 开发的 offer 的,也许属于盲目自信,苦笑.jpg,为什么后来最后签了一家测开的 offer 呢,我对测试是一点不懂的,偶然在一个公司的招聘群里看到有同学发了一家公司的测试,看着待遇还不错,就想试着投一下,下午投的,傍晚直接约第二天上午的面试,晚上补了一些测试的基础知识,面试过程中,也表示了自己学习方向是 Go 后端开发,愿意转测试,对方对我研究生阶段的研究方向比较感兴趣,讲了几分钟,然后有 8 分钟左右的算法环节,基本全程是自己在讲,之后对方问的测试相关问题,我确实是不太懂,后面又问到 Python 相关的知识点,太久没用 Python了,答的感觉很一般,没想到两天后 hr 通知我面试通过,可以进行 ceo终面,整个终面交流都挺不错的,刚开始第一个问题,面试官就问“会不会觉得测试不如开发,发自内心回答”(大概是这个意思),然后我说会有那么一点点,hhhh,对方就说测试的一个重要性,什么越是高级的开发越明白测试的重要性balabala,反问的问题,对方都会很耐心地解答,让我对对方公司好感骤增。后面添加了部分负责人微信问了大致工作内容,感觉到了这个时间点,能再去拿到开发 offer 的概率已经比较渺茫了,就打算签了三方,11月23日写好三方,邮往对方公司,秋招 over,最后,还是非常感谢这家公司愿意收留我,具体名字就不说了。

不要过多比较,签完就少看牛客、脉脉吧,给自己徒增疲惫。这个秋招让我比较难受的是,有几家中厂吧,我笔试做的已经挺不错了,算法都 ac,为什么不给面试机会,如果简历不通过直接流程结束就可以了啊,何必浪费对方时间呢。

未来几年会怎么样呢?也许会更难,也说不准。

最后,如果你耐心看完了,听我说,谢谢你,因为有你,... 经历这场秋招,我也明白自己的能力不足,确实很多方面都做的不太好,让各位见笑了。

-- 于 2022.12.4 00:45