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

 

本文作者作为一名应届毕业生,在入职不久后遭遇公司系统因被大厂收购而停用的困境,面临转岗技术支持或重新求职的抉择。作者选择继续寻找Linux开发岗位,并分享了两次失败的面试经历。第一次面试是一家中小厂的游戏服务端岗位,面试官对其使用SCM_RIGHTS进行性能优化的项目提出疑问,并就Linux底层知识进行了深入考察,但作者因缺乏深入了解未能充分作答。第二次面试是一家小有名气的小厂,要求在线编程测试和场景题。编程测试中,作者完成度尚可,但场景题实现简易terminal pager时,因边界条件处理不当导致程序崩溃,最终面试评价为代码细节掌控不足。

💻 **职业发展受阻与主动求变**:作者刚毕业即面临所负责系统因公司被收购而停用的局面,虽然领导提出转岗技术支持,但作者为追求更好的职业发展,选择积极准备面试,目标是二线及以上城市的Linux开发岗位,期望薪资15k+。

🔧 **技术实践与面试考察**:在一次面试中,作者分享了利用SCM_RIGHTS优化进程间通信的经历,实现了5-10%的延迟和吞吐量改善,但面试官对该技术细节的了解似乎有限,也引发了关于Linux底层实现和安全机制的深入提问。

💻 **编程测试与场景题挑战**:另一场面试包含在线编程测试和场景题。编程测试涉及回溯、贪心、动态规划等,难度适中。场景题要求实现一个简易的terminal pager,需要处理常规文件和管道流,并控制缓存,作者在实现过程中因边界条件处理不当而出现程序崩溃。

📉 **面试反馈与自我认知**:两次面试均以失败告终,其中一次面试评价指出作者“有一定的计算机基础和编程能力,但对于代码细节的掌控还有所欠缺”。作者坦诚这是自己的不足,并表示将继续学习以提高工程实践能力。

💬 **求职不易与经验分享**:当前求职环境充满挑战,作者投递多份简历仅获得两次面试机会,并愿意将失败的面试经历分享出来,以期与同行交流经验,并寻求改进建议。

前情提要:/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开发 面试经历 技术优化 编程挑战
相关文章