相信除了极少数幸运儿,大部分同学参与实习项目因为实习时间短、经验不足等,往往只会被分配一些边角料既没有什么复杂度也没有难度的小需求,那么如何在面试中让面试官眼前一亮,让他觉得你会成为他的靠谱好同事,给你一个大大的通过呢。
大家好,我是日暮与星辰之间,创作不易,如果觉得对你有用,求点赞,求收藏,求关注,求转发,有问题可以直接在评论区提问,知无不言,谢谢。
我就献丑以我本人去年秋招的简历为例子,与大家讲述一下我对于这方面的思考。
首先定下一个基调,面试官一般都是工作多年的老油条,是你进组以后的mentor、组长、领导,他们肯定自己就带过不少实习生,参与过不少实习生项目,所以清楚实习生项目的局限性,我们不必夸大自己的项目多么多么牛逼,只需要展现出来自己参与该项目中完整的学习路径、参与过程中的思考沉淀,就能赢得面试官的肯定。
为什么要做这个需求。如果你只是说产品这么要求的、mentor分给我做的,那么评分立刻就低了,最好能讲清楚整个需求的背景、上下文,帮助面试官你做这个的意义,同时让他觉得你对业务有一定自己的理解。以我参与的项目中的第一个feature为例子,我可以回答这是出于保护用户隐私、给予用户自主权的考虑,加上有部分用户反馈希望出这样的需求,所以我们及时响应,增加了用户满意度。第二个feature,我可以回答是参考业界主流的方案,引导用户对自己打标签,帮助我们解决用户推荐冷启动的问题,增加用户推荐的相关性,从而增加用户粘性。
回答出来以后,面试官就会觉得,你不是一个只会拧螺丝的小工,而是对整个业务有自己的思考的,后面如果你成为他的同事,他就不需要对你参与的领域操心太多,给予了肯定。
其实就是讲一下项目如何实现的,这点是重中之重,因为这是写在你简历里的,意味着是你相当熟悉的领域,如果讲的磕磕绊绊,会让人很怀疑整个项目的真实性。在讲如何实现的时候,除了讲最终实现的方案,还需要讲出来你的设计思路,最好是摆出来2-3套实现方案作为对比,讲一讲你是经过什么样的考虑,选择了现有的这个方案。
以我项目中的第一个feature为例子,可以讲一讲整个权限表的设计、存储方案、缓存设计、缓存失效方案等等。比如是否需要给每一对用户组都在权限表里建立一条记录,最终答案是不必的,因为只有一小部分用户会对权限进行修改,只需要在修改时新建,没有修改时返回默认值即可。同时这里又涉及到缓存的设计,缓存的有效时间,如果没有记录,如何在缓存里面存数据,以防止缓存穿透的问题,如果更新缓存,来确保缓存和数据库数据的一致性,假如数据库挂了,有没有方案能保证用户暂时无感知。
总结一下,即要对于你参与实现的feature,你要表现出对于各个细节点的把握,包括表字段、分库分表的设计、缓存与数据库的一致性、灰度开关控制、容灾处理、排查问题的方式等等。
比如我的项目里都是feed流的边角料,但是如果我对feed流的实现原理也能回答上来,那么面试官会不会觉得我这小伙子很有前途,很有学习能力。面试官假如问我feed流的实现原理,我也可以先说说主流的实现有 “读扩散、写扩散、读写结合`等多种方式,每种方式的优缺点,各大主流平台比如微博、今日头条、朋友圈他们的可能的实现方式是如何的,又做了哪些优化点。再说说自己的项目里对各种异常情况做了哪些优化,比如我们依赖的推荐引擎挂了,要怎么处理,假如我们后端依赖的redis挂了要怎么处理,假如后端挂了,客户端要怎么处理。把这些思考点都展现出来,尽管并不是你实现的,只是你的学习结果,但是也能得到面试官的认可的。
总结一下,该点就是 展现出你对参与项目主要实现方式的掌控,以及业界主流的实现方式,他们这样实现的出发点,不谈具体场景的解决方案都是耍流氓,最好再说一下你是如何得知的,比如通过关注xxx团队技术公众号等了解的等等
除了上述这些点,面试中学习也很重要,比如面试时会问到一些项目之前不熟悉的点,面试后就要迅速补齐相关的所有点,尽管自己离职了可能看不到相关代码权限了,但是还是可以找一下主流的设计方案的资料,来忽悠一下面试官 项目里就是这么实现的。 只要忽悠的合理,面试官是不会较真是不是真的这么实现的。
我是日暮与星辰之间,创作不易,如果觉得对你有用,求点赞,求收藏,求关注,求转发,有问题可以直接在评论区提问,知无不言,谢谢。
#阿里巴巴##实习##秋招##春招##面试复盘#