V2EX 5小时前
[职场话题] 骑驴找马, Linux 面试凉经分享
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

一位刚毕业的Linux开发者在工作中面临系统停用的挑战,为寻求更稳定的职业发展,他开始积极求职。文章详细记录了他两次面试的经历:一次是在中小厂应聘游戏服务端,侧重于Linux底层知识和性能优化(如SCM_RIGHTS的应用),但因对部分技术细节掌握不足而未通过;另一次是在一家小有名气但规模不大的公司,进行了在线编程测试和场景模拟题(实现简易terminal pager),尽管表现出一定的编程能力和对细节的追求,但最终因代码细节处理欠缺而被拒。作者分享了面试中的具体问题和反思,并表示将继续提升技能以寻找合适的工作。

⭐ 面临职业转型:作者因所在系统被大厂收购而面临技术支持转岗,为追求更具发展前景的Linux开发岗位,积极投身于求职之中,目标是二线及以上城市,期望薪资15k+。

⭐ 中小厂游戏服务端面试:面试内容涵盖了自我介绍、项目经历(包括使用SCM_RIGHTS进行进程间通信的性能优化),以及Linux底层知识(如tty切换、core dump调试、签名机制、futexfd等)和网络算法。作者在SCM_RIGHTS部分被问及细节,但面试官对该技术似乎不甚了解,最终因网络算法等弱项未能通过。

⭐ 小厂编程与场景题面试:该厂要求在线编程测试(回溯、贪心、动归类题目)和60分钟的屏幕共享场景题——实现简易terminal pager,需支持文件和管道流,并控制缓存。作者在场景题中尝试实现alternate screen,但因时间不足和边界条件处理失误导致程序崩溃,最终因“代码细节掌控欠缺”被拒。

⭐ 面试反思与提升:作者坦承自己在代码细节的掌控方面存在不足,并认识到这是需要通过工程实践不断提高的关键点。他将继续学习充电,并鼓励读者分享自己的面试经历和建议。

⭐ 求职困境与现实:文章反映了当前求职市场的竞争激烈,尤其是对于初入职场的开发者而言,即使具备一定基础,也可能因对技术细节的掌握程度不足而面临挑战,同时也体现了底层技术岗位在市场变化中的不确定性。

前情提要:/t/1139545

虽然最后我勉强找了份工作,但情况并不是很妙:我接手的那套系统所支撑的业务线被大厂收购了(我入职后才知道这件事),他们有成熟的技术方案,用不到我们这套系统。所以等数据迁移完成后,这套系统将会停用。(谁说的做 infra 比做业务更稳定的啊喂,人家做业务的跑去跟大厂签合同了,我做底层的直接原地失业)

其实也不完全算是失业,领导说到时候会安排我转岗,去做其他产品线的技术支持,薪资不变。这刚一毕业就去做技术支持,以后的职业生涯怕是离开发越来越远了。我还是有点追求的,所以这些天骑驴找马,继续准备面试。

我们小县城也没什么开发岗位,我打算往二线及以上城市发展,找 Linux 开发相关的岗位,预期薪资 15k+(综合行情和自身能力,我觉得这个价位是比较合理的)。

当然众所周知现在求职不容易,投了十几份简历,目前只接到了两个面试,全都一面挂。那就分享一下吧。


首先是一家中小厂,面的游戏服务端岗位。

微信电话面试,先是简单的自我介绍,然后问项目,问我最近解决的技术挑战。本来打算讲讲我梳理屎山代码的经历的,可是这玩意不结合具体代码不好讲。于是就讲了讲最近做的一个性能优化:

我们系统里的进程间通信依赖一个消息中间件。其中对于那些需要原样发送的 raw 数据,本来是使用 splice 进行传递。虽然 splice 是 zero-copy 的,但仍然有系统调用开销,尤其是对于那些大量发送小数据包的场景,会影响性能。于是我做了基于 SCM_RIGHTS 的改造,将 fd “发送”给目标进程,从而进程间可以直接收发 raw 数据,无需 broker 对其转发。实测对于大量小数据包的场景,有 5-10% 的延迟和吞吐量改善。

面试官对其中的一些细节进行了提问,但感觉他似乎并不了解什么是 SCM_RIGHTS 。

然后就是技术问题环节,以 Linux 八股为主。随便举几个印象比较深的:

其中大部分我只能说个模棱两可,毕竟没实际做过相关内容或深入学习过,只能根据已有知识推测。

也问了一些网络和算法的八股,但这些是我的弱项,连续几个没答上来,就不再问了。一共持续了大概一个小时吧,最后面试官说,如果有后续,本周之内会再联系。今天已经周日了,应该是挂了。


然后是武汉的一家小厂。虽然是小厂,但是小有名气,家人用过他们的产品也觉得不错。

先是让我登进他们内网的一个平台(应该是搭的开源 OJ 平台)做题。四道编程题,语言 C/C++/Go/Rust 自选,时间 60 分钟,允许在本地编写然后复制到页面中提交。

前三道不算太难,思路明确,分别是回溯、贪心、动归。如果对标 leetcode 应该稍低于 medium 的平均难度。还算顺利地做出来了(但不能确定是否处理好了所有的边界条件,因为提交后没有提示通过了多少测试用例),第四道没有思路,时间也不够了(后来查了下也可以贪心)。

本来以为挂了,但是转天突然收到了面试邀约。

先是问项目。比起工作中的内容,面试官对我的开源项目更感兴趣(虽然最多的也只有十几个 star ),而且比起实现细节,更关心技术选型的过程和最终敲定方案的理由。

然后是一道场景题:实现一个简易的 terminal pager 。要求是既能支持常规文件,也能支持管道这种 non-seekable stream 。而且要控制好缓存逻辑,不能因为数据量太大而爆内存。支持的命令不需要太多,能翻页和跳转到首尾行即可(也就是 less 的 j/k/g/G )。

还是 60 分钟,语言从 C/C++/Go/Rust 中自选,编辑器和工具链用我自己电脑上的,允许查资料(问 AI 也行),但是要全程屏幕共享,做题的过程也会被打分。

本来我以为这个挺简单,甚至还玩起了花活,支持了一下 alternate screen 。然后很快发现时间不够用了。要想正确实现 pager ,还是挺考验编程能力的。

于是我果断放弃了支持 soft wrap ,先把最基本的显示错乱的 bug 解决了。在时间结束的前一分钟,本来以为大功告成,突然 segfault 了,十分尴尬(后来看了下,是没处理好边界条件的原因)。但我自认为表现得还不错,完成度挺高的了,应该能过。

然而今天刚刚收到邮件通知,面试没过。面评里写到:有一定的计算机基础和编程能力,但对于代码细节的掌控还有所欠缺,恐难以胜任。

emm ,好吧,这确实是我的不足,需要在工程实践中逐步提高。


接下来我会继续充电,不断提高自己,寻找合适的工作机会。大家如果有什么建议,或者想吐槽自己的面试经历,也欢迎留言讨论。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Linux开发 求职面试 技术优化 职业发展 程序调试
相关文章