一个程序员面试的毒鸡汤

人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的。

我一听 呀?那我这岂不是就不优秀了吗,于是毅然决然和女朋友分了手。

人们都说,互联网寒冬来了,这个时候还在大面积招人的公司,必然是牛逼的公司。而这个时候勇敢跳槽的人,必然是牛逼的人。

于是2019年1月25日下午14:00,我开始了字节跳动的社招面试。

为了这天,我前一天排老长的队理了个利落的发型,胡子刮得一干二净。穿上崭新的新百伦999,连袜子都是崭新的NB,墨绿色工装裤配酒红色卫衣,外面再搭一件精致的黑色羽绒小坎肩,准时准点出现在电脑屏幕前,准备开始视频面试。

去面试头条,你最好有点心理准备。我面试过头条的好兄弟给了我一句忠告。不过邮件对考查内容写的一清二楚,所以一面,我并没有做太强的心理建设,事实证明我可能对通用型业务和软性技能的理解还不够透彻。

时间到了,画面里出现一个面积很小的房间,面试官坐在里面调节姿势和座椅靠背。这不是我第一次,但我却比第一次还要紧张。面试官跟我的一位闷骚朋友很像,长相、气质、说话声音如出一辙,我几乎差点问他这些年跟郑州那个女孩子还有没有联系,孩子到底是不是你的......

确认过眼神,我们在初次见面的紧张和局促中正式开始,前戏的部分大同小异,自我介绍,公司职能,项目简介。

小作坊走出来的小猿,项目经验并不出彩,没有高并发,没有分布式,前端后台服务器和数据库部署在同一台机器上。为了不显的太low又假装不经意提了提自己在GitHub上有自己的开源框架,但是他并不care。我的花样耍完了,就到了他肆意挥舞小皮鞭的环节。

“我看你项目上都是偏独立开发,或者你一个人在项目中承担了很大的比重。那你能不能说说你们的项目在部署的时候用的是怎样的架构?”

“主要就是Django部署那一套,nginx+uwsgi+Django+mysql。”

“那你详细说一下nginx在部署的时候有哪些必要的配置?”

“这个我在nginx里配置了端口的转发,对外监听80或443,然后转发到内部uwsgi的端口,由uwsgi来处理业务请求,部署Django项目。”显然我对nginx的认知仅仅局限在配置个端口反向代理,偷换概念企图蒙混过关。

“不是,我的意思是nginx当中不是有很多参数配置嘛,你在项目部署的时候那些参数是必要的配置,有哪些可以调优”

对方识破了我的小伎俩,并不给我蒙混过关的机会,无奈我只得低头认怂,表示并没有用过其他配置,出师未捷就挨了当头一棒。

“那你再说说uwsgi它的工作原理吧,它的底层是怎么工作的。”

因为紧张的缘故,原本不会的知识,一下子变得还是不会,囫囵吞枣地讲它代理一个服务端口,分配不同的线程处理客户端浏览器的请求。

“那他的底层是怎么实现的?看来我如果还没求饶,他就不打算放过我。

......(这里省略一些不清楚、不知道、忘记了之类的词藻,保留一丝尊严。)

接下来是关于redis哲学三连“是什么?为什么?怎么用?”

我把肚子里仅有的关于Redis的一滴墨水挤成了三滴,仍然没有给出他想要的。继续追问Redis的数据存储方式,操作方法,读写操作在底层都是如何实现。

啊~,好深。

除了低头委屈说不会,内心的我已经意识到了问题的严重性,平常面试你只要一喊不行,对方就会体贴地换一个方向继续深入,这次我都快被搞哭了,他居然换了个姿势继续往深怼,这谁顶得住啊……

到了这一步我的心理防线基本宣布告罄(qìng)。往后又问了关系型数据库表的存储结构,我隐约记得是毕加索还是毕加树来着,完后又追问到索引的实现原理,创建一个索引怎么它就能加快查询效率。

其实面试官的套路大多如此,每个技术都尽可能的深入,深到你不会为止,并不是非得要把你折磨的不能自理,而是为了考察你的技术水平到底如何。但是事到如今我的大脑已经无法给自己完成心理建设了,摧枯拉朽般智商情商性商逆商全线崩盘。

当然这也不能全怪我,上来就是三个大闷棍,就是李云龙来也让旅长打成懵逼了,哪里还能腾出精力开意大利炮。

下一个节目到了数据结构,面试官稳准狠一步到位点到了我的敏感地带:堆。什么是最小堆?什么是最大堆?在堆中怎么插入一个元素?

这个问题上值得庆幸的是,我居然急中生智,鬼使神差地用了四种不同的方式表达我不会,每种方式都尴尬而不委婉,并且还不重样。好歹面试一波儿不能让人家觉得我一无是处,多少还算有点文笔....

其实我平时稍微多看哪怕一眼,知道堆的实现方式是完全二叉树,这一连串的问题不至于答的这么惨,面试的时候脑子里记得看过栈和队列,完全不知道堆是怎么实现,下来才知道就是个完全二叉树。

这个时候的我已经被折磨的身心俱疲了,面试已经持续了将近四十分钟,嘴开始打漂,情绪紧张思维也难以集中,回答中开始大量出现我感觉、我猜、可能、应该是等高危词汇。

死亡轰炸还没有结束,接着是MQ,我所使用的MQ的技术选型,为什么选它,项目中如何应用,最后无一例外,它底层是如何实现?怎么保证的稳定的消费者生产者队列?回答的中间穿插着我不自信的连接词“嗯~啊~哼~哦~”。每次我招架不住求饶喊着不要不要的时候,我都能看到面试官嘴角狡黠(xiá)的微笑,由内而外的快感浮现在脸上憋都憋不住。心里暗暗发誓迟早有一天,我也要在上面。

最后以一道算法编程题结束,如何给一个双向链表排序?我失去控制的舌头自作主张地把话锋导向了快速排序,那,你来写一个双向链表的快速排序吧,这个视频页面上旁边有一个编辑器,语言你随便,用c++或python都可以,大概10分钟的时间,可以吧。

“那,我用c++试一下吧”

我随即在编辑器里自信的def了一个quickSort函数,参数是一个int数组,还有两个int值代表low和high两个档位,函数末尾加上冒号,下一行开始缩进四个空格以示尊敬,当然代码段的区分花括号必须得有。

写完这几句,双手这才收到了大脑已经在十分钟前宕机的消息,于是两手一摊表示无能为力。时间才过去一分钟,剩下时间我开始拿纸笔低头写字,沉默的面试官抬头看到还以为我在纸上排演算法,可实际上我是在拼尽最后一丝脑力回顾刚才他问我的问题,倒不是为了面试后好好复习,主要是我一会儿要写知乎,哈哈,我可真是个小机灵鬼。

期间面试官也用自己的代码快速的敲击键盘,听声音猜大概是在吐槽HR,筛选简历的时候长点心,找来面试的这都什么玩意儿。

时间差不多了,再一次厚着脸皮主动承认自己写不出来。实际上,我哪怕正经用c++写一个数组的快速排序也算话,然而当时的我满身只剩下疲惫,痛苦和羞辱。

面试官终于放我走人,长达一个小时的激情视频聊天终于结束,关掉视频的一刹那,随着浑身一阵抽搐,整个人瘫软在椅子上。我是谁?我在哪儿?刚才发生了什么?哦,刚才发生了那种事情。我之前对那种事情还挺向往的,内心对此充满了激情和憧憬,怎么现在,对这件事情一点兴趣也没了?现在只想这么瘫着什么也不想做。要不要点根烟抽抽?哦对了我不抽烟。原来贤者时间脑子里这么多想法……

飘飘忽忽浑浑噩噩,脑海里一直回荡着周董的音乐:这感觉已经不对我最后才了解,一页页不忍翻阅的情节我好累,你沉默看我掉过几次泪多憔悴,而我心碎你受罪你的offer,我不配~~~!

面试过程和提到的问题大致如此,为了阅读体验有部分艺术修饰,但是内容全部都是真实的。接下来咱们说点正经的。

讲真的现在的我只想把头插到土里再也不出来,之前写过超级浓的鸡汤,讲学习方法,被技术号拿去直接顶置到现在;写过高赞,讲连连看的外挂,到现在还有人私信问我能不能做外挂的私活儿,一天上千的利润;作为培训讲师讲培训机构内幕,有上海北京的培训机构给到一小时1k了我不想去,想趁年轻进大厂做技术。在大家一顿商业吹捧之下就真的以为自己是个大佬了。

有极少数的人在评论区怼我说花拳绣腿,说我二本渣渣热衷于误人子弟,我都不以为然,心里想着等我有一天拿着大厂的offer回来证明自己!到今天总算知道他们说的是对的,打嘴炮和真有能耐是不一样的。。

今天这轮面试,算是被扒了个体无完肤,可以说是程序员面试的反面典型,当然我也不怕说出来,菜就是菜,吹水就是吹水,努力把吹过的水早日兑现,迟早有一天能成真正的大佬!

这次作为loser再说说在求职前期准备过程中暴露出的问题,望大家引以为戒。

1、尽量早早做好准备

面试不应该是准备好了才去,而是时刻都准备好了。如果非要说从什么时候开始准备离职跳槽,我的建议是半年。别像我一样,面试了才开始看算法和数据结构。

2、先找小公司面几次进入状态,再投大公司一举拿下。

我蠢到一开始就动用了我所有的人脉,投了bat及其他二线大厂所有的内推。算上字节跳动已经是我黄掉的第三个响当当大厂了,踩着大厂当垫脚石攒面试经,除了觉得自己蠢,我还觉得自己真特么牛逼。

3、你的简历,就是复习大纲

总有人拿网上找到的拿了bat offer的人提供的复习大纲复习,结果发现并没啥卵用。我这次字节的面试,他提出的所有的问题全部是基于我简历中的技能清单。

我认为很多人但凡能做到简历中技能清单描述的样子,就已经算了不起了。如果简历中感觉无料可写?我推荐一个好办法:

听说过名字,就写了解;
跟着帖子写过demo,就写熟悉;
项目当中用过,就写熟练掌握;
项目当中经常用,就写精通;

我就是这么写的,结果很显然,出来混,总是要还的,敢装逼,就活该被人凌辱。

4、警惕舒适区

不得不承认我在现公司呆的真的非常舒服,领导非常器重,项目和授课两不耽误,去大学实训总是受到学生的追捧,手里时不时还能接到价格公道的私活儿。

之所以想走,一方面是因为心中对大厂和技术的执念,另一方面是因为现在已经到了给自己规划的时间,碰巧赶上互联网寒冬是没有办法的事,但是我仍然坚信真正牛逼的人是不会被寒冬所阻拦。

最近的几波儿面试直接把我打到怀疑人生了,面试完后双目无神的望着天花板不知道该如何评价自己。授课到现在带过的学生虽然不多,但是送进一二线大厂的没有二十个也有十几个了(我们机构不造假学历,都是实习生进的),怎么我这个老师找个工作这么费劲?是道德的沦丧还是人性人扭曲?是大厂真的飘了还是我确实拿不动刀了?

“如果程序员对职场感到迷茫,对眼下的舒适感到不安,我建议他出去面试,不见得要走,但是你要出去,听听市场对自己的评价。”

这句话是在一个求职公众号里看到的,我觉得不光程序员,任何职场人都该深以为然。我对职场虽不迷茫,但是面试一波儿就发现,我在毫无意识的情况下,在工作三年这个节点成长上已经被人甩下一大截,更要命的是对基础知识的掌握程度完全比不上应届毕业的实习生。

原文地址:https://blog.51cto.com/14551588/2459128

时间: 2024-10-27 21:07:34

一个程序员面试的毒鸡汤的相关文章

上海宝付一个程序员的面试经历

上海宝付一个程序员的面试经历.对于职场人来说,找工作就是一场煎熬,找工作的漫长过程,不仅需要很大的体力消耗,给心理带来的巨大负担也是让很多人感到压力上大的,如果长期找不到工作,缺少了收入来源,更是让人倍感崩溃. 最近就有一位程序员在某职场论坛晒出了自己找工作的经历, 他花了2个月时间面试了包含百度.腾讯新闻等23家互联网企业,但是却无一通过,有的倒在了终面上,有的倒在了二面上,还有的甚至还未面试就直接放弃了. 当他把自己的凄惨经历晒到网上时,也引起了众多同行的围观. 有人不禁好奇,这位程序员的年

一个程序员的真实故事(下)

这几天比较忙,时间不够用,本来想天天更新一篇文章的,最后还是食言了,看来自己对时间的安排还是不够游刃有余. 今天就来揭晓一个程序员的真实故事的下集,上周写了上集,反响还是不错的,有好多朋友都在期望着下集呢. 回到故事中,上周一,检查结果出来了.小Z带着媳妇去拿结果,他带着一种很忐忑的心情去的. 检查报告一共有三张,当从自助机取出检查报告的那一刻,小Z匆忙.紧张地大致扫了一下三张报告,手都紧张地在发抖,......,还好,上边大部分指数还是在正常范围的,他松了一口气.他们接着去找医生分析检查结果去

金九银十,浅谈关于java程序员面试的一些事项

本篇博文针对的是应届毕业生以及工作两三年左右的java程序员. 为什么要跳槽? 这是一个很广义的问题,每个人心中都有一份答案. 例如: 公司的待遇不好, 薪资涨幅不符合预期要求, 厌倦了出差的荒无天日的繁重工作, 公司的妹子太少, 领导太傲娇, 同事之间关系太逼格, 某某同学跳槽到某某公司之后涨到了多少多少钱, 某某同学的朋友的同事的三姑妈家的大儿子的好基友在某某高就, 等等辞职理由. 咱们就不多说了,还是谈谈怎么应付面试吧. 以下内容是我在面试中总结的一些经验,希望这些可以给各位带来帮助和启迪

《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么

在Java语言中,字符串起着非常重要的作用,字符串的声明与初始化主要有如下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容相同的字符串对象"abc",它们在内存中的地址是不同的.只要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = "

《Java程序员面试宝典》学习笔记(基本语法部分)

这是我学习欧立奇<Java程序员面试宝典>第三版的笔记.这篇是基本语法部分. ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 在Java中,字符只以一种形式存在,那就是Unicode.在JVM内部一切都由Unicode表示,而输出到外部后(JVM和OS的交界处就是各种输入/输出流)转换为其他形式的编码. Java用了中间缓存变量的机制,所以,j=j++可换成如下写法: te

《Java程序员面试笔试宝典》终于在万众期待中出版啦~

<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理想的企业 在这里,众多知名企业面试官将为你撕开神秘的求职面纱: 在这里,各种求职达人将现身说法为你揭开求职谜团: 在这里,各种类型的企业招聘细节都会被展露无疑: 在这里,我们将为你抽丝剥茧,还原IT行业的真相: 在这里,我们将为你指点迷津,告诉你职场上的风风雨雨: 在这里,我们将为你点石成金,成为那盏指引你前

程序员面试笔试宝典学习记录(三)(数据库相关知识)

关系数据库系统与文件数据库系统的区别如下: (a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化. (b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件. (c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式. acid,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability). 数据查询:select sele

从1.5k到18k, 一个程序员的5年成长之路

http://blog.csdn.net/lgg201/article/details/8637763 昨天收到了心仪企业的口头offer, 回首当初什么都不会开始学编程, 到现在恰好五年. 整天在社区晃悠, 看了不少的总结, 在这个时间点, 我也写一份自己的总结吧. 我一直在社区分享, 所以, 这篇总结也是本着一种分享的态度, 希望相比我还年轻的同学们, 可以从中找到一些让自己成长更快的文字. 先介绍下背景:1. 2008年3月开始学习编程, 目前2013年3月;2. 2009年6月计算机专业

《程序员面试宝典》精华 编程语言部分

<程序员面试宝典>精华 编程语言部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.当然这里的糟粕只是指不那么重要,或者比较简单,并不是说书写的不好.希望以后回顾时无需再看此书,只看保留在文中的精华即可. 文中有少许bug,亦摘录在此. 本文专注编程语言部分,包括第五章到第九章的内容 第五章 语言细节 5.1 y = z = 5,等号先计算右边,返回值是赋值后的左边的变量值 5.1 printf函