秋招又要开始了,当了好多年某厂面试官的我,也说说斩获大厂offer的套路

秋招又要开始了,又有好多小朋友要找工作了,那么作为11年前校秋招混进某大厂,从此接着混了11年而且当过好几次校招面试官的我,还是可以来聊一聊这个话题的。下面就针对技术类岗位的问题,聊一聊大厂需要什么样的技术人员。

       就校招本身而言,最重要的是看一个人有没有潜力,那么从潜力的角度上将,你的技术掌握得怎么样,牢固不牢固,决定了你未来的培养上限以及培养成本。如果想通过校招混大厂大厂的技术性岗位,下面几点就是你应该在大学期间打下牢固基础的。有了这些我们再聊点其他的。相信做到下面这些,无论哪个厂都会考虑要你:

      1.算法基础,大厂的笔试题就没有,别的不说,算法必须玩儿得溜溜的,算法导论还是要看看的,ACM的题或者是leetcode的题目你必须要刷得有一定水平吧。对了,大学参加点算法比赛,如果拿点奖,超级加分项。算法这个问题,个人看来虽然算套路,你不想被套路,那还是刷题套路考卷吧。为什么如此重要?因为很多经典问题的线装本就在这里,经典问题你都解决不好,还指望你能灵活变通?

      2. 数据结构,程序=数据架构+算法,这个应该听过吧?代码的灵魂之一了,合适的数据结构配合合适的算法,是解决问题的根本之道。也不要求你多了,时间复杂度和空间复杂度的问题,必须给整明白了。数组,链表,这两个基本的结构搞懂,加以创造,平衡二叉树,红黑树,哈希表,堆,捅,图,这些结构用数组和链表的方式分别去创造下,自己实现下,增量因子设置多大,为什么要那么大什么的破烂问题也要关注。

      3.计算机组成原理, 至少《计算机组成与设计》至少大学要看一遍吧,不说原版,中文翻译版还是要搞一手噢?

      4.计算机网络,这个搞懂几个层是啥,TCP/IP的三次握手,四次挥手过程,为什么要这样设计,抓包怎么抓,基本还好了。

      5.操作系统,《操作系统――精髓与设计原理》什么的还是看看吧,手动实现个建议版本的linux内核,相信内存分配、调度、进程、线程这几个点,着重理解下,相信大学的你只要看了些linux内核的书籍,大多数内核代码你是看过的了。

      6.数据库:不光要会写sql,几大范式定义概念搞懂。数据库事务的ACID总能扯明白吧?隔离层级分别保障的粒度,和依然存在的问题你得知晓吧?更重要的是,你得知道sql得优化和套路。查询优化策略,db层级的优化考虑你是大学生,不太会问题。这年月也不想要求你oracle了,但是主流的MYSQL的存储引擎之间的区别,你得知道吧。索引你得知道吧,这个是个比较广泛的话题噢,索引原理,索引数据结构与算法,为什么会采用这些索引?索引优缺点。都起码知晓下吧。数据库事务的实现方式你能知道一些吗?二阶段提交、三阶段提交你知道不?看你个人深浅了。

      7.编译原理:记得有门课程,如果实现一个简单的编程语言,这个都有搞过吧,各位985的童鞋们?翻翻去,别忘记了。别觉得难,也别看不起,你要是真认了我也就放心了——至少这个小伙子处理字符串的能力很强,AST都能搞搞了,日常的字符串信息处理问题应该不大的。

       8.编程语言:由于笔者主要从事java方面的技术工作,java类技术岗位,从来也在各个厂商的名额中占有较大份额,我们就谈一谈这方面的心得体会,包括不限于可能泄露点儿面试的秘密。

      a.集合方面:map,set,list的区别概念,你总该晓得吧?你看数据结构重要不?我问你点具体的实现类简单点的就HashMap HashSet ArrayList,看你能扯多少,要是能行的话我们换点稍微有意思的话题HashTable,CurrentHashMap,TreeSet,LinkedHashSet,LinkedArrayList,BlockingQueue及其各种实现看你能掰扯几分了?

     b.IO方面:BIO\NIO\AIO你有能知道多少呢?这个话题可就多了也见深浅了,话题也开放了。基本的IO操作,到实现机制、设计模式乃至操作系统的各种调度我都可以和你聊一聊,也顺便可以和你扯一扯mina,netty,Grizzly,听没听过,玩没玩耍过,相信很快能摸出你的深浅。

     c.多线程:你以为这个你能跑得掉?线程的生命周期,同步异步的区别,什么时候需要同步,什么时候需要异步,线程的调度方式,聊聊并发编程,为啥要并发,怎么去并发,你处理了哪些并发问题,你能没经验,不过没关系,问问还是可以的。

     d.虚拟机的那些事儿:都搞java了,虚拟机的一些东西你总得知道吧?JVM的内存模型,垃圾回收机制,各种机制下的垃圾回收器怎么工作还是知晓些吧。JVM字节码那个太苛刻了,不要求你,但是你有真功夫,大家聊聊还是可以的。

    e.一些基本的东西你还是要有吧:http协议、https协议,dns解析过程、servlet是个什么东西?生命周期如何?request/response区别,session/cookie区别实现机制,redirect/forward的区别你能给简单讲讲?

    f.编程框架:web类的框架执行流程总得讲一下吧,比如SpringMVC是如何工作的?你自己实现个web框架可以还是不可以?怎么做,可有思路?既然是Spring了那么IOC\AOP的实现原理怎么来的,bean的作用域有哪些,务传播机制,隔离层级,基本还是要问问的?反射,代理怎么回事不可能搞不清楚吧。代理的几种方式JDK的cglib的aspectJ的,你又只多少?抛弃了框架你自己实现基于类的代理有门么?mybatis听过没?不管你听没听过反正jdbc那些事情,数据库连接池的那些事情,我们有得聊,只要你能勾起我们的聊天兴趣。

       g.通用性质的一些东西:大名鼎鼎的apache你知道吗?web服务器,应用服务器类的区别你知道吗?ngnix玩耍过没?ngnix你都用来干了些什么?缓存可有听过?怎么来玩耍?从浏览器端一直到后端的各层缓存该怎么来玩耍?策略又是如何来定的?分布式缓存可有听过?memcached,redis可有玩耍过总之话题很多,不一而足。

      h.分布式的一些概念:你可知晓为啥要分布式?分布式有哪些经典问题?简单点的如何实现应用无状态,全局唯一ID(莫要拿什么雪花算法之类的烂大街的来扯,要有点实际意义的),负载均衡有没有概念?如何做?如何去做高可用?如何去保障分布式环境下的一致性问题?消息中间件玩耍过没有?知不知道都有哪些,实现区别在哪里,用它干嘛去?分布式的环境下如何去保障服务的可靠性?如何面临雪崩问题?如何面临穿透问题?包括但不限于spring cloud的相关话题,都解决了哪些分布式方面性的问题,如何解决的,策略有哪些?问题多的是,看你有多少深浅了。

        当然,你的脑袋也不要死,不能僵硬,再卖你点套路性的问题——给你一个大文件里面全是数字如何去完成排序?很多人会想到归并排序,各种算法各种结构,这些都没啥问题,都是基本分,有没有想到这个文件怎么读、怎么写,读到哪里,写道哪里,你就没想过读取后写到不同的机器,然后不同的机器跑一样的算法然后合并结果,最后输出?对的,这个问题能想到后面的,至少你可能了解分布式文件系统的套路和思想——hadoop,hbase,hive,我们看看小伙姑娘功夫咋样,是不是真有货,是不是真有潜力?

      9.项目:项目这种事情,基本时开局一张图,剩下全靠吹,学校里的一般没啥含量,项目呢也就那样。你就搞点重复发明轮子的事情,找个开源点的牛x一点的项目,研究研究,搞懂原理,自己实现了一套,然后讲xxx我也是做到过的,还压测过balababa.事实上,你只要做过,在这个过程中,你甩开很多老猿都正常!当然,你要是跟着很牛x的导师,做了很牛x的项目,这个就另说了。你也不需要看这个了。

      10.英语: 国内的大厂少有要问的,但是作为一只猿人,“扫文档”的功夫会决定你的成长,中文的要会扫,英文的要扫得更溜,这样才能接触到技术上的那口鲜,如果还沉迷看某些培训视频,那不要怪大厂给你关门,你就算进去了大概率被淘汰走不远就是你自己的事情了。

     11.招聘信息获取:如果你的学校不好,不是全国那几个知名学校。那你要时刻关注了噢,那些大厂在啥时候招聘,在哪里招聘,你要搞懂了哈。要不然你火门都没摸到,别个已经结束了哈。不要怕不在自己学校,你去别人家当面霸又有啥不可以,尤其是二本,三本,这几乎时你唯一的出路了。每个厂喜欢问些啥玩意儿,面试题你不看下噢?现在信息泛滥,你别管校招社招的题都看看总不坏吧?再说春招和秋招的区别你可懂?硬实力不够,软实力来凑,还有个小门叫实习生哈。

      12.社交能力:这个能力才是最牛b,最重要的大学时,多混混知乎或者做做自己的公号,认识几个大厂的朋友不是难事,他们虽然人到中年,容易被后浪拍死,但是他们往往就是某司面试官。你要是跟他们熟了,本事也过硬,卖身做厂奴这种事情还不是分分钟?再告诉你一个事实——不管你爱听不爱听,我们团队有权利选择和团队喜欢的人在一起工作,不分社招秋招,统统适用。

      以上说了很多,都可能是面试的点,看上去可能有些难,但是大厂嘛之所以叫做厂,那是肯定有些原因的。如何拉开差距,提高你的竞争力,你需要有自己的一些特点。也就是说,基础在水平线上,某些点你得有一技之长。

      别找学校不好的借口,答主三本毕业,也是毕业进了某大厂混的,至今11年了,也算经常面人了。学校不好的朋友可以看看。谁说三本生就一定没机会呢?

你可能感兴趣的:(猿进化)