很荣幸能够接到ali和tw两家公司的面试,这两家公司都是知名企业,也都是很有技术实力的公司,其面试的难度也是早有所耳闻。但是本着明知山有虎偏向虎山行的原则,我还是决定上这一趟上,看看到底有多难。

    阿里面试篇

       
面试官是大概晚上八点左右打电话过来的,然后就开始了一个小时的电话面试。首先是自我介绍,我就简单的介绍了自己的教育经历和工作经历。之后面试官问了为什么转行做java开发,我说是兴趣所在。然后是英语能力的询问。接着就是技术面试开始了,问了我关于java内存模型是否了解,我balabala回答一通,接着又问内存回收,当我说到minoGC
和major GC ,full  GC
之后又问我majorGC与FullGC的区别等。这个可惜没有答上来,看来这方面还是得继续加强。又问了spring源码和mabatis源码等,以及一些设计模式的问题。最后还问了关于简历上项目的问题,比如微服务dubbo框架的源码等,自己在项目上解决问题最有印象的一次是什么灯。

    tw面试篇

   
面试官也是大概八点打电话过来,首先是一个自我介绍,接着就是英语面试,跟着就是我对于tw是否了解,我说了解,这个公司是技术驱动公司,是提出敏捷开发的公司等等。进入技术面试,问了java内存模型,spring源码中如何实现ioc的,其中问了如何实现循环依赖在下确实没有看过这块源码,还有jdk1.8中对于hashmap的优化,spring
bean的作用域等等。最后给发了homework,全英文的三道,任选一道,三天完成。自己最后也是花了三天时间完成了,但是并没有通过。

    总结篇

    1.英语非常重要。ali和tw都是国际公司,如果技术人员英语好是一个很大的加分项,随着国际化越来越大,英语作为国际语言仍然是高端人才的必备技能;

   
2.基础是王道。很多软件和插件以及框架,会用是一种层次,但是知道怎么实现就是更深的层次,要是能手写简单的一个那就是高手了,像这些大公司很多都是自己研究产品的,对于基础知识的考查是非常重要的。所以在以后的工作中对于基础的学习要重视。

    3.深入探究。不仅仅限于了解和知道,要往更深层面的知识去钻研。只有深耕才能学的扎实,比如虚拟机就值得深入学习。

   
4.设计模式。上面提到,tw的家庭作业,面试没有通过,原因就是包命名不规范而且没有采用设计模式。设计模式在我刚接触的时候感觉用处不大,但是学了spring和mybatis的源码之后才发现,框架中基本都是设计模式套设计模式。如果不懂设计模式,根本就看不懂源码。当然了优秀的软件设计必然是满足六大原则的。

   
5.源码学习。学习源码是一个开发人员提升自我的重要途径。通过学习源码能提高自己的软件设计能力和编码技术,学习源码能够使我们深刻理解设计模式,在什么环境下使用什么样的设计模式等,至少将mybatis和spring源码学习通透。

   
6.博客。两家公司都提及了是否有博客的问题。博客,不仅能记录自己的所学所感,也能通过分享加强自己的记忆和理解,同时还可以与其他开发人员进行交流,确实是提升自己的非常好的手段。

    最后,还是希望自己能够知不足而补不足!习主席说道:为者常成,行者常至!