3年小厂逆袭BATJ高级工程师面试总结

迷茫

   从2018年工作三年的公司离职后,到现在已经过去一年多了吧,期间经历了无数挫折,有收获,也有感悟和心得。到得知大厂已经通过了全部的技术,心里有欣喜,也有茫然,更多的是感慨吧。

    我是硕士毕业,刚刚毕业的时候在一家当时不错 的金融公司从事股票金融交易系统的研发,工作一年后,很快发现了技术瓶颈和发展受限,项目不盈利,团队技术大牛大量出走BAT,整个项目江河日下,当时也想有出去看看机会,骑驴找马。可无一不是碰壁而回。

   那时候就很苦闷,也渴望着改变,毕竟温水煮青蛙的故事都耳熟能详,我不想成为那个被煮死的 青蛙之一,期间也去过一些IT课程网站,基本都是JAVA和 PHP, C++的项目课程很少,偶尔找到C++的项目,也都是微软的MFC项目,也是不太匹配。 有买过一些算法书刷题,有看过一些技术博客。但是碎片化的学习对提升十分有限。我这里非常记得某大牛说过,学习一定要系统化,你平时学习新的知识如果不能纳入你的知识体系,你 可能就当刷个娱乐新闻,三天后你就忘了,所以职场学习的第一个关键,就是系统化学习,切忌碎片化。

  所以我想改变一下,改变自己的学习方式,改变自己的技术学习方法,改变自己的时间控制。

行动

一、技术提升

   首先是Mysql,互联网业务的基石,你必须了解索引数据结构,主从复制原理,SQL查询优化,索引优化,高可用架构设计,常规故障排查,慢查询,长事务,分库分表等等,很多同学肯定听到这里一脸懵逼。

  卧槽,我只会增删查改,对哈,大家都会。

   面试官怎么把你遴选出来呢?

   面试有时候说面试造航母,进来拧螺丝,可能你准备的90%的内容工作用不上,但是,注意但是,那10%的内容是需要的。大厂大价钱招你进去就是为了关键时刻 能用的上你那10%,就像高考和考研一样,一张数学试卷能涵盖所有内容吗?不可能,但是这是一 种选拔手段,区分你的段位。我曾经的同事,现在已经在腾讯做到高级岗位了,当时终面的时候, 前面的面试官特地打电话过来,我知道哪些内容其实工作中没什么用,但是你还是把书好好看一 下,为最后一面做准备。面试是不确定的,有时候看运气,但是我们需要大概准备的内容是确定 的,大厂也不会面硅谷刚刚研发出来的碉堡的技术,都是业界已经用了几年的成熟的方案。所以我 们要做的就是做好自己,认真的去复习,去对抗不可知的不确定性。

   再说说Redis,主从复制,集群模式,哨兵模式,两种模式怎么配置,怎么使用,原理。

   redis的 RDB和AOF持久化原理。Redis使用的常见问题。五种数据结构是啥,底层实现是什么,zset底层的 除了 ziplist还有跳表skiplist,原理是啥,怎么实现的等等。在此之前我真不知道,如果面试的时候能顺利答出这块,面试官对你的印象分会大增,会 给你不错的面试评价。很多内容就算面试用不着,平时跟同事吹吹牛逼也是好的。

   然后我们说一说注册中心

   服务注册和发现的中间件,zookeeper和etcd, zookee的zab协议。

  还是老套路,原理,工程应用。zookeeper实现分布式协同队列,服务发现。etcd的raft协议,watch机制怎么实现的, etcd实现注册中心和分布式协同队列。大家最好找一个github的靠谱的实现,手动敲一遍。当 然最省事的方法就是找课程,那些都是技术大牛的心得和实现,而且都是调试过的,一般不会 坑你。错了你找他退钱。僅。zookeeper和etcd的选型问题,技术选型很重要,我们要知其然 然后知其所以然,这块是面试官考察的重灾区。最作死的回答是,我也不知道,看别人用就用 了。面试官此时除了满脸黑线,内心的OS是,我靠,这哥们用一门技术平时也不思考下,招进 来就是个挖坑型选手。程序员是门手艺活,自己吃饭的家伙你平时都不认真打磨思考,你这不 就是砸自己的饭碗吗。标准回答是,这个A优缺点,B优缺点,我们的业务场景是什么,所以A 的什么优点适合,缺点我们可以忍受,等等。计算机是一门trade off的艺术集大成者,我们所有的技术和底层架构都是一直在trade off,这是道的思想。所以各位同学脑子里一直要绷着一 根弦,一个开源组件,优点和缺点是啥,怎么做技术选型。

   当然进大厂需要的技术点不止这些,每一个点我就不一一具体说了,对技术感兴趣的同学可以看看我留在文尾的技术学习路线图,可以参考。

二、简历

   好了,前面你终日闭关苦读,终于到了赴京赶考的日子。可你真的准备好了吗?是,你可能有满腹经纶,还有无数碉堡的技能可以展示,可结果发现自己并没有拿到准考证也不行呀。那对不起,打道回府吧。

   问题出在哪?

   简历!

   你的简历太平庸了,你很有可能被HR给过滤掉。虽说有内推机会等等,但是大部分情况还是要面试官再审核一下的,如果你的简历没有任何亮点,还是没有意外的进入了人才储备库。小厂项目本来很难有技术含量。但是你可以做一些自己的小项目。自己不会,没关系,网上这种项目课程多的是,这些项目和 github的区别是讲师会手把手从零到一完整的展示一个不错的项目怎么开发出来的。你可以完 整的跟完,了解整个流程。然后多敲几遍,最好,自己写一部分关键实现代码。做到心中有数。然后上传到github上,在简历上附上地址,写明项目解决了啥问题,有啥特色,用了什么技术。

   有的同学估计已经是头大了,感觉是劝退的节奏了,没办法,大环境不好。以前那种增删查改,就能去个中等规模的厂搬砖的日子结束了。资本寒冬来了,现在研发这块逐步淘汰初级玩 家,中级玩家在限制名额,只对高级玩家开放,而且多多益善。现在的人工智能日益强大,业 务以后没几年,你的简单业务逻辑机器人接管了。如果自己不能迈过那个段位,等待你的是淘 汰,如果迈过去,就是涨薪和名企或者是大厂。未来发展会进入一个新的高度。毕竟年轻的时 候只要搏一搏就有无限可能,谁也不想成为那个35中年危机的人吧。那种颓废感和对自己命运 的无力感时刻如芒在背推动我一刻不停的前进。

所以,加油吧!

三、时间管理

   职场的学习套路清晰之后,怎么安排学习时间也是门学问,你天天晚上10点多拖着疲惫的身体 回家,第一件事应该就是睡觉,而不是去学习充电,坚持的后果就是越来越困。事倍功半。后来逐渐发现了这一定律后,决定不跟自己的直觉和身体对抗,该睡觉睡觉,大清早起来学, 你大晚上不睡觉刷抖音头条,早上一觉睡到9点半起来去上班,又疲劳效率又不高,还脱发。早睡早起。大部分小厂11点差不多也可以上床睡觉了。我早上一般6点醒,然后起来打开电脑开始学习,把前一天计划好的技术内容学习一遍。差不多折腾到8 点半,然后吃个早餐,9点就可以出门了。每天差不多也就2小时。大清早的,跟你微信扯淡的 人都没。可以避免打开电脑的时候,手抽又点到微信了。然后一个小时就过去了。

   周末就是学习的狂欢日了。大把时间去在知识的海洋里翱翔。如果你决定了摆脱目前被动的局 面,没有技术含量的日复一日的重复工作,你要有心里觉悟苦战一年,舍弃一年的周末的精彩 生活。要浪也是一年后再说吧。头几周是很不容易的。后面坚持下来,形成了惯性,你会逐渐体会到一种学习的快感。一览众山小的快感,大部分小厂的人都是只会CRUD,一问原理,都 是黑人问号脸,再来点分布式的知识,基本就懵逼了,别说会了,我都没听过。其实这就是信息不对称。大厂的套路,知识和方案,教科书没有。我们被锁定在一个极小的视野范围,还自鸣得意,一遇到大厂面试,就是车祸现场,遭到面试官的降维打击。我们有幸赶上了知识付费的时代,给我们打开了一个上升的通道和途径,而不用像前辈人一样苦苦思索,付出几倍甚至 数十倍的努力才能进大厂。

有不少人排斥知识付费,排斥线上学习。但我觉得这是一个高效改变自我,提升能力的公平时机。不像过去的父传子、师傅传徒弟。

予知识以价格,我可买之。

当然很多人觉得不靠谱,但这个就仁者见仁智者见智了。

像我在之前提到的小项目,在51、极客、慕课、腾讯课堂都有学习。

学习方法和学习时间的规划都说完了,下面就说说我具体的复习规划安排,一般主流的开源组件要学习,我这个人比较懒,都是找视频课程,跟着走。

   工作的时候就像外卖接单,别人点什么,你就做什么。工作之余你可以有多种选择。如果你总是被工作环境所困,导致专业能力进展受阻,就可以通过开启业余小项目来突破这种限制。业余项目带来的诸多益处不消多说,除了给你简历增加亮点,也能为你工作之外打开一个新的视 角和空间。想起多年前流行的一句话,来形容当前的大环境很贴切,八小时内求生存,八小时外求发展。除了简历需要项目润色,加一些自己的小项目,还需要说说自己工作之余看了啥书,了解了目前哪些开源的技术,这些都会让面试官对你印象深刻。都是加分项。我想起来前 几天知乎的帖子,阿里巴巴研发坚持一年刷I eetcode,最后拿到google的offer,阿里巴巴的工作福报大家都是知道了,他都有时间,各位同学应该不会比他更忙吧,时间都是挤出来的。善于管理时间的人是最后的赢家。

•最后祝大家都能找到理想的公司,进入心中的dream company。
资料:

3年小厂逆袭BATJ高级工程师面试总结_第1张图片
个人简介Q群获取或扫一扫关注微信公众号
3年小厂逆袭BATJ高级工程师面试总结_第2张图片

你可能感兴趣的:(1000道程序员常见问题解析)