这几天面试,想找份 C++的工作。结果被各路大神各种虐。快被自己蠢哭了。
第一家公司做企业网盘的,需要重构桌面客户端。面算法的时候崩了。"N 个元素中取第 K 大的元素"没答出最优解,"找出数组中重复次数过半的元素"面试的时候除了各个元素计数最后找重复次数最大的元素之外,完全没有任何思路。(结果面试一结束就想到排序取最中间的元素。最优解更优雅,遍历数组剔除不同的两个元素)。最后 HR 礼节性的问了下期望薪资啥的。还是毫无悬念的被拒了。
第二家公司要做计费系统,还是做桌面客户端的。吸取之前的教训,好好复习了下算法,技术面没啥问题,薪资待遇没谈拢。实在接受不了”试用期没有公积金,转正了按照 6000 基数交公积金“,外加地点离自己买的房子太远了,没接受。
第三家公司做安全的,应该是被虐得最惨的一次了。画之前项目的架构图,画自己重写的模块的时序图。发现自己做过的项目自己都快忘了。特别是底层的通讯机制,真的是一边回忆一边画一边被吐槽,整个人都懵逼了。最后连“监听的 socket 有新连接进来时, select 中监视的事件是什么”都反应不过来。直接被面试官质疑”这个模块你到底有没有做过,到底负责哪个功能。你说出来我们才能好好聊“。最后还被面试官指出了发现了一堆之前根本没意识到的 bug 。读取线程读取 socket 并解码数据的时候把 fd 的值存在数据对象中,写入线程从数据对象中取出 fd ,把编码后的数据写入对应的 socket -> 读取时发现 socket 断开了, socket 关闭, fd 归还给操作系统。之后新连接复用了原来的 fd 的值。再然后写入时从数据对象中取出 fd 并写入。导致原来应该发送失败的数据,现在直接发给了某个随机客户端。这个 bug 真的一直都没注意过。
瞎写了那么多,其实总结下来就是,自己学艺不精。本来就是非计算机专业毕业,基础差,还不好好努力补。遇到问题上 google 搜一下,解决完就忘。很多东西都只是囫囵吞枣的理解了一下。大致说一下原理吧,都知道。一问细节吧,瞬间懵逼。还有就是,简历上写的东西,一定要确保自己真的真的都吃透了。要不然真的很尴尬。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.