本人半年前从外企里跳槽出来到一家业内知名的互联网公司,本来想写篇如何在外企和互联网公司快速提升自己的感想,但仔细一想,在软件设计原则里尚且有SRP原则,即一个类(或功能模块)应当有并且最好只有一个职责,所以在这篇文章里,就先专门写在外企相关的感受。互联网公司的里相关感受待下次分享。   

    之前我写过一篇博文,工作2年进外企,不是难事,给出进外企的建议,本文会在这篇文章上做进一步的补充。

    外企有什么好处?按照我的职业规划,我该不该去外企发展?这不是本文关注的问题。而且,一千个人对此可能会有一千种不同回答,况且,自己情况不同的同学和所在公司类型不同的同学,对此问题可能也有针对自己的回答。

    本文无意鼓励大家去外企,当然更不会贬低外企,只是把描述一些客观情况,大主意得自己拿。本文更适合的阅读者是工作经验5年内想去外企的同学。

 正文开始-------------------------------------------------------------------------------------------------------------------------------------

 

1  外企的常规招聘途径

    1 一般会到985或211高校或知名高校里招实习生,从中选择合适的入职。    

    2 社招,一般一本毕业后,如果再有2到3年相关经验,就可以具备面试资格了。

    3 如果是二本,或者一本非计算机专业,那么如果具备4年相关经验,也可以有招聘资格了。   

    4 一般外企会从外派公司(Vendor公司)招外派员工,一般这部分的员工能力和学历要求会适当降低些。往往这批外派员工,工作2年后,就可以有转成正式员工的机会了。

    需要说明的是,外企一般会和猎头合作,所以候选人如果通过猎头,就能得到更多的外企的面试机会。 

 

2 工作3年左右,如何进外企,能力准备篇

    其实如果有进外企的打算,如果提早2年准备,那么效果会比较好,但一般如果准备3个月,也能具备进外企的能力。

    我是做java后端的,所以就从这方面讲些注意要点:

    1 Java Core方面

    1.1 至少得精读java编程思想,这本书还是比较经典的,看完后应当能掌握其中的一些诸如并发,面向对象和集合等方面的思想,再此基础上,最好再看本Effective Java 中文版。当然,其它书是多多益善。

    1.2 集合方面,得了解至少一种集合(比如ArrayList) 的底层实现代码,了解hashcode和equals的作用,最好再了解下ConcurrentHashMap的底层实现代码。一般来说,能达到这些要点的,再刷些集合面试题,就应该可以了。

    1.3 多线程方面,得了解并发的各种手段,最好是看些并发方面的书,在此基础上,得了解锁,信号量等实现机制,另外,线程池也是必看点。

    1.4 Jdbc方面,得了解批处理和预处理,在事务方面,得了解事务隔离级别。

    1.5 面向对象和设计模式方面,最好是能结合项目说自己是怎么用的。

    1.6 最好在虚拟机方面,掌握些可以打动面试官的说辞。    

 

    2 数据库方面

    其实就两点,第一,常见复杂sql的写法,比如带exist,子查询,group by, having和distinct等的查询。第二是优化,比如用索引,分区, 执行计划等手段来优化SQL。

   这两点会衍生出很多问题,再深入提问可能会涉及到数据库集群,分库分表,NoSQL,大数据之类的,但对于外企的高级开发而言,了解到通过执行计划优化SQL性能,或许就足够了。

 

    3 Java web方面

    3.1 最好得了解一套web框架,目前面试官比较喜欢拿spring系列的来提问,比如spring boot, spring cloud。

    3.2 了解一套orm的框架,比如mytabis,这里,最好别停留在会用的级别, 还应当看下底层的实现代码,比如如何通过spring注入数据源。

    3.3 最好了解下spring 依赖注入,AOP,事务管理等方面的底层代码。

    其实这块我的心得还是比较多的,我就据此写过java web轻量级开发面试教程 

 

    4 架构方面

    4.1 Redis方面最好了解下,比如基本数据类型等。

    4.2 各组件,比如反向代理,消息队列,网关,负载均衡等,可以大致了解下。最好能结合一个项目,从前端到后端,系统地了解分布式架构的组成以及各组件的作用。

    4.3 如果能吃透一方面,比如mq,或者nginx+lua,包括知道怎么用,知道底层的一些细节,绝对是加分项。

    4.4 如果能知道如何在linux里配置部署项目,如何通过linux命令快速查看日志,定位问题以及如何在线修改配置,这也是个加分项。

   

    这部分的内容比较长,来总结下。

    第一必须刷题,各方面的都得刷,第二得了解些底层实现,第三分布式组件这块可以经验很少,但得会说。

    其实对于互联网公司而言,外企在技术方面的招聘要求会低些,至于低多少,不同人遇到的情况可能不同,但根据本人的面试经验,外企的录取要求是,项目年限够且能匹配,面试时能证明这点就行,而互联网公司可能再会问些比较新的高并发框架以及性能调优的问题。 

     

3 工作3年左右,如何进外企,准备简历和面试篇

    写简历时,最好能让面试官看出你之前的工作经验和项目经验和公司要求很匹配,在我的书里以及之前的博客里已经提到过这方面的技巧。

    然后你可以自己投,但最好是找猎头帮你投。如何找猎头?当你在多个网上表示出你愿意换工作,猎头就会找你,或者你可以自己找些猎头公司(自己搜),自己把简历给他们,或者你可以找你朋友,他们多少也会积累些。

    找猎头时,你得明确告诉他们,你想进外企。或许一个猎头手头没这个机会,但当你找了多个以后,这种机会就多了。

    或者,可能在某个时间段,某个外企没入职名额,你也可以多找几个,也可以等(一般不会超过2个月)。

    或者,你自己感觉,自己的能力离开进外企稍微有些差别,那么你也可以和猎头说,能通过外派公司先进(我见到的外派员工,一般2年后就有转正机会,而且转正率不低)。

    如果你的下份工作不想再到一些小公司里将就,那么你可以目标稍微坚定些,我想,通过上述渠道,至少你能有到外企面试的机会。

    然后是面试,这块在我的书和博文里也提到过相关技能,这里就不再说了,但这里请务必注意,一定得准备外语。

    我记得我进外企刚开始几次和老外开会时,就能听懂三类话,打招呼(hi,hello),说再见(good night,byebye)和叫我名字,但我当时确实通过了面试的英语口试。

    其实面试时,英语问题相对简单,而且集中,比如介绍自己,介绍上个项目,介绍你最拿得出手(或最有感想)的项目,介绍你的兴趣爱好(周末干嘛),再有就是评价你自己(优缺点)。

    而且面试的英语对话时间是最多是15分钟,就对话几个问题,这还是比较好准备的。另外,别担心英语差进外企后就不行,其实在语境了,英语提升很快,我在试用期过后,就能和老外简单对话了,现在,虽然可能发音有口音(其实就不标准),但可以不仅能和老外进行工作上的沟通,而且还能适当聊些其它话题。 

    我本身可以算个面霸,而且做过技术面试官,以我的感受,(同时结合其它不少人的感受),面试进外企,难度比想象中要低,更多程度上,难点在于态度(不做很好准备)和心态(不敢去面)。 

 

4 比起其他公司,外企一般有哪些优势?

    在外企里,我体会下来的最大好处有如下三大类。

    第一,这是个非常好的平台, 比如之前你在一个不知名的公司里干,可能你工作n年后,工资确实会加,但也就在一些小公司轮转了。 但在外企里,你干了3年,那么你后份工作的选择面就很大了,至少能考虑一些大公司,如果想要进互联网公司,至少工作经历这块能达标。

    第二,培训机会很多,我经历过的就有数据库,前端,架构等方面的培训,而且讲师的能力都很高,除了从外面请老师,外企内部一般会定期有分享,一些大牛能说下自己的技术。

    第三,比较稳定,而且属于自己的时间会很多,比较适合自己接触些新的技术。有时候,外企甚至像所大学研究院,往好了讲,可以实现工作和生活的负载均衡,我也听说有种说法,叫资本主义大锅饭。

    总体感觉下来,如果在外企里呆个几年,技术能力或多或少都会有提升,但更重要的是,综合能力提升得会很快。

    一般来说,在大公司,尤其是外企工作过的人,谈吐,协调以及为人处世的能力,会给人一种更加职业化的感觉。

 

5 以事例说些在外企的工作点滴

    我不大想直接说在外企的感受,所以这里通过些问题和例子来让大家自行感受。

    1 这是个问题,在国内的外企里,能否真正做有核心价值的内容,或者换种问法,外企会不会把一些核心技术和核心工作带到中国子公司?

    2 在有些外企,比如干同一类活,一般来说,国外员工的职级要比国内的高些。而且,国内员工干的活有时候要求会很细,比如葱丝怎么切,馒头怎么包,都会有具体的定制要求。

    3 在外企,不仅得和国内同事交流,更得在工作中和国外的同事交流,比如说要用一个新技术,可能审批链会到国外,所以很多事情上,得跟多的把精力用在沟通上。

    4 外企的平均加班时间可能要比互联网公司要少,所以在外企里,团队建设和公司活动会比较多,我经历过的就有跳蚤市场,带娃上班,展会等,至于平时看场电影吃个饭,次数多的我都数不清了。

    5 这也是个问题,大家可以想下,比如小张每天工作非常饱和,有加班,而且用到的是比较热门的互联网技术,而小李每天工作压力不大,平时会有比较多的自己时间,那么三年后,谁的提升快?

    6 在外企的大概一年半时间里,我有精力写了两本书,而且我老婆那段时间生孩子,我也有足够多的精力来陪产。

    这部分以一个冷笑话结尾,在外企,某人20岁时,他的外国上司是30岁,直到他35岁,他的外国上司还是30岁。

 

6 在外企里,快速提升自己能力的建议

    这段话是写给已经在外企里的和打算进外企的同学看的,如下先写点大的方向。

    第一,千万得有远虑,如果没有机会接触到最新的技术,比如大数据,分步式架构,那么得多看点视频教材,别让自己太脱节。

    第二,得抓住机会练外语,外企是个免费练外语的学校,大家可以对比下一些口语学校的收费。

    第三,外企的开发方式会比较正规,大家可以通过实践敏捷开发等模式,让自己在软件管理方面有足够的提升。 

    第四,如果你感觉开始吃老本了(技术进步不快,而且老是用现有储备的技术干活),那么你要么就得提升自己,要么就可以开始考虑了。 

    需要说明的是,当在外企里呆满2年后,就要避免“老油条”心态,因为这时,在公司里也混熟了,哪怕以养老的心态,推诿掉一些事情,也能让自己得到“及格”以上的评价。不过我就见过不少人因此脱节于主流技术框架体系。

    如下说些能快速提升自己综合能力的建议。

    1 外语就不说了,大家可以尽可能地多参加视频或电话会议。

    2 一定得多和别人交流,从而锻炼自己的沟通协作甚至是扯皮的能力。

    3 多看看你领导(或者领导的领导)是怎么管理团队的,一般在外企里,很能学到管理能力,相比之下,在互联网公司,提升技术能力的速度会很快。

    4 技术上,相比于其它种类的公司,你有足够多的时间学,那么不学白不学,你可以通过写博客,写书,看最新视频教程,自己搭建小型项目等手段来提升自己。

    5 给自己制定个学习规划,一般来说,再难的技术,学习3个月的以后,不敢说精通,但至少可以吹嘘了。这三个月如何安排:半个月了解大致内容以及准备环境,一个半月运行必要的代码,再通过一个月到网上查资料再深度学习,这样一年一来,保守估计能学到4种比较值钱的技能。我就这样学了sprign cloud,高并发组件等技术的。

 

7 总结,版权说明和求推荐

    各位在引用本文前,请和本人打个招呼,引用时请注明原出处。

    本人以在外企的面试和工作经历,写了此文,限于篇幅,无法一一展开,大家可以通过回复来告知相关问题,比如如何进外企,如何准备面试等,或者问其他问题,本人会针对性的回答。

    对大家来说,外企不是唯一选项,但不失为一种提升自己的方式。可能有些大神感觉外企不适合自己,那么也别以此理由来反对本文。

    最后再说一遍,本文无意怂恿大家进外企,更无意为外企站台,本文的动机是想尽力帮助想进外企的同学。如果大家感觉本文有帮助,请点下方的推荐按钮来支持作者,最后再次感谢大家读完本文,

posted on 2018-07-26 08:44  hsm_computer  阅读(3373)  评论(9编辑  收藏  举报