面经,非科班生的转型之路

他是一名大四学生,建筑设计专业,自学 Python 不到一年。面试知乎顺利拿下 offer

作为一个非科班生他是如何面试上知乎这家公司的?来看看他这场紧张,刺激的面试之旅

··············

在经历了6天前的惨痛失败后,我痛定思痛,狠狠的补习了算法知识和 TCP/IP 的相关知识,踏上了新的征程——知乎后端开发实习生的面试。

这也是一次改变我人生的面试。因为我本来打算回老家过年了,车票都买好了,就是后天的动车。

一面

面试官大大一上来就让我手写归并排序和快速排序,并且提问了我一些算法复杂度的问题,还让我实现了一个哈希表数据结构。

还好我因为6天前的失败,这几天狠狠的补习算法的知识,全都答出来了。然后考了我数据库的相关知识,设计了一个用户关注系统的数据表,还让我写了三个相关的 sql 语句。然后问了我如何建索引和 MySQL 引擎的一些知识。

最后问的是操作系统的一些知识,协程,多线程,多进程之类的,都是我最近几天恶补的,正好学以致用,哈哈~一面算是比较轻松的过了。

点评:一般公司整个面试流程分为3到5轮,一面的面试官通常是未来和你同一项目组共事的同事,这轮面试往往考察候选人的基本功,就是计算机理论知识,包括数据结构与算法,数据库系统(包括数据库设计,SQL查询,优化,索引等等),操作系统的基本概念和计算机网络里面的常见知识,如果你能把这四门课程中的基础搞懂了,第一轮基本上问题不大。

所以,面试前一定要准备充分,常见的算法与数据结构的特点都要做到心中有数,平时多去刷一些算法题,像leecode,牛客网都是很多的练习地方。

二面

面试官主要是进行深化简历,问了我简历上所有项目的实现细节,包括我项目中实现的一些算法。比如我的一个微信小程序里面的架构和图片排列算法的实现。还问了我手游辅助框架的设计思想和一些Python具体实现。因为这些项目都是我亲手开发的,所以回答起来也是比较得心应手。感觉这几个项目还是给我加了很多分的。

而后面试官询问了我前一份工作的一些心得和体会。在这里非常感谢我前一个的实习公司,他们给了我很多工作经验和Python代码开发技术。面试官对我前一份实习经验还是比较满意的。

然后,面试官给我出了个题,是关于长链接转换短链接的技术实现。我之前没接触过这方面的知识,我第一个回答是使用md5把长链接压缩,然后用哈希算法把md5哈希,最后把哈希后的值作为短链接和长链接入库。面试官不太满意,说如果数据库连接非常多,会有很多的哈希冲突。

不过面试官很耐心,慢慢的引导我,最终我做出了正确的做法,直接用一个递增的数字去维护数据库,只需要把数字转换为字母的编码格式,就能得到对应的key,然后再把value存成长链接,就实现了短链接和长链接的对应关系。

接下来提问了一些TCP / IP的基础知识,感觉考察的还是比较全面的,还问了我很多应用层协议的实现细节,比如 HTTPS,DNS 之类的,再答下去我就基本不会了。我隐晦的透露我是非科班出身的消息,果然面试官大大非常善解人意,表示理解并且让我准备三面。

点评:第二面的面试官可能是你未来的直属leader,主要针对实战项目来提问,考察你的动手能力,所以你要对你所负责项目或者模块的每一个实现细节非常熟练,这样回答起来就自信。

第二,学会思考,遇到问题先别急着去百度,Google,看看能不能用现有的知识去解决,然后再去网上查找有没有更好的方案,培养了自己独立思考的能力的一大好处就是面对困难,挫折不至于措手不及。

第三:如果问题已经超出了自己的知识体系范围,坦诚回答不知道,别故作聪明强答。学会引导面试官,引导面试官往自己擅长的方向走。

很多人不知道去哪里找实战项目,其实你缺乏的是产品能力,梁宁说产品能力是每个人的底层能力,任何人都应该有的能力就是产品能力,善于从身边找到痛点,痒点需求,然后动手去实现它,这样就有了实战能力


三面

三面的时候是一个非常帅气的小哥哥,而且特别爱笑。指点了我很多web开发优化上的细节,也给我出了题,如何处理长时间响应。我给了好多我个人的理解。比如分表分库,小图片规整,CSS/JS合并压缩,Redis 缓存热点数据,使用浏览器的缓存功能等等。

然后他问了我很多具体的实现细节和工具调试方法。感觉自己答的不是特别好,但是我被他的笑容感染了吧,还是比较轻松的。

接着他问了我魔法函数new和init的区别,比较简单。

最后让我提三个python的缺陷,第一就是多线程全局锁,导致执行计算密集型任务效率低下。第二个,内置函数太全面,而且都是底层c实现的,扼杀了自己用纯python实现数据结构的动力。第三个,语法太飘,作为动态语言既是优点也是缺点,代码量大了以后维护起来反而吃力。他还让我对他提问题,不知道该问啥,尬聊了一阵然后他通知我等待四面。

点评:第三轮面试可能就是CTO或者部门老大来面你了。前面两轮考察的是你的基础扎实程度,项目经验,第三轮考察的就是你的潜力有多大

四面

四面是HR面了,能走到这一步还是比较开心的,主要就是聊了聊职业规划和发展方向。HR小姐姐给我介绍了公司的福利,还给我提供租房的建议,甚至还打算帮我找房源。总之挺感动的,最后商谈了待遇问题和入职时间,并且发放了Offer,这次面试算是圆满结束啦~

点评:最后一面就是HR的面试了,能走到这一步,基本上离成功仅一步之遥,只要与公司价值观没有太大的偏差基本上没啥问题,

总结

首先非常感谢知乎对我的肯定,愿意给我一个非科班出身的人机会。然后,我也要感谢我前一份工作的同事和公司,是他们给了我快速成长的空间。最后,我一定要感谢六天前的那个特别厉害的公司,是他们让我知道我目前的不足。在接下来的三个月里,我会尽自己所能的去学习、工作,争取能留在知乎这个所有的Python开发者天堂~

对于相同的要转行的童鞋,我认为基础是非常重要的。这次就是因为我狠补了之前欠缺的算法和 TCP/IP 知识,所以才能拿到知乎的实习生Offer。

加油~!

··············

另外,我问了他两个问题

第一个问题,你觉得转行遇到最大的困难是什么?

我感觉最大的困难就是迷茫感。不知道自己能不能做。不知道自己应该怎么做。不知道自己做的是否有意义。

第二个问题,成功转型最关键因素是什么?

应该是乐观和充分的自我认知吧。因为我投简历真的是九死一生,而且那个一生还是我不想去的公司。尤其是对于转行的人来说,真是分分钟就坚持不下去的节奏。但是我认为自己的能力是足够的,所以即便再困难都坚持了下来

最后希望这篇文章能给自学编程的朋友多一点信心,伟大是熬出来的,幸福是奋斗出来的。

作者的知乎ID:@隔热城市,你可以找他交流心得

推荐阅读

学Python,关注Python之禅

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值