本人半年前从外企里跳槽出来到一家业内知名的互联网公司,原本想写篇如何在外企和互联网公司快速提高本身的感想,但仔细一想,在软件设计原则里尚且有SRP原则,即一个类(或功能模块)应当有而且最好只有一个职责,因此在这篇文章里,就先专门写在外企相关的感觉。互联网公司的里相关感觉待下次分享。 html
以前我写过一篇博文,工做2年进外企,不是难事,给出进外企的建议,本文会在这篇文章上作进一步的补充。前端
外企有什么好处?按照个人职业规划,我该不应去外企发展?这不是本文关注的问题。并且,一千我的对此可能会有一千种不一样回答,何况,本身状况不一样的同窗和所在公司类型不一样的同窗,对此问题可能也有针对本身的回答。java
本文无心鼓励你们去外企,固然更不会贬低外企,只是把描述一些客观状况,大主意得本身拿。本文更适合的阅读者是工做经验5年内想去外企的同窗。linux
正文开始-------------------------------------------------------------------------------------------------------------------------------------nginx
1 通常会到985或211高校或知名高校里招实习生,从中选择合适的入职。 web
2 社招,通常一本毕业后,若是再有2到3年相关经验,就能够具有面试资格了。面试
3 若是是二本,或者一本非计算机专业,那么若是具有4年相关经验,也能够有招聘资格了。 spring
4 通常外企会从外派公司(Vendor公司)招外派员工,通常这部分的员工能力和学历要求会适当下降些。每每这批外派员工,工做2年后,就能够有转成正式员工的机会了。sql
须要说明的是,外企通常会和猎头合做,因此候选人若是经过猎头,就能获得更多的外企的面试机会。 数据库
其实若是有进外企的打算,若是提前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命令快速查看日志,定位问题以及如何在线修改配置,这也是个加分项。
这部分的内容比较长,来总结下。
第一必须刷题,各方面的都得刷,第二得了解些底层实现,第三分布式组件这块能够经验不多,但得会说。
其实对于互联网公司而言,外企在技术方面的招聘要求会低些,至于低多少,不一样人遇到的状况可能不一样,但根据本人的面试经验,外企的录取要求是,项目年限够且能匹配,面试时能证实这点就行,而互联网公司可能再会问些比较新的高并发框架以及性能调优的问题。
写简历时,最好能让面试官看出你以前的工做经验和项目经验和公司要求很匹配,在个人书里以及以前的博客里已经提到过这方面的技巧。
而后你能够本身投,但最好是找猎头帮你投。如何找猎头?当你在多个网上表示出你愿意换工做,猎头就会找你,或者你能够本身找些猎头公司(本身搜),本身把简历给他们,或者你能够找你朋友,他们多少也会积累些。
找猎头时,你得明确告诉他们,你想进外企。或许一个猎头手头没这个机会,但当你找了多个之后,这种机会就多了。
或者,可能在某个时间段,某个外企没入职名额,你也能够多找几个,也能够等(通常不会超过2个月)。
或者,你本身感受,本身的能力离开进外企稍微有些差异,那么你也能够和猎头说,能经过外派公司先进(我见到的外派员工,通常2年后就有转正机会,并且转正率不低)。
若是你的下份工做不想再到一些小公司里将就,那么你能够目标稍微坚决些,我想,经过上述渠道,至少你能有到外企面试的机会。
而后是面试,这块在个人书和博文里也提到过相关技能,这里就再也不说了,但这里请务必注意,必定得准备外语。
我记得我进外企刚开始几回和老外开会时,就能听懂三类话,打招呼(hi,hello),说再见(good night,byebye)和叫我名字,但我当时确实经过了面试的英语口试。
其实面试时,英语问题相对简单,并且集中,好比介绍本身,介绍上个项目,介绍你最拿得出手(或最有感想)的项目,介绍你的兴趣爱好(周末干吗),再有就是评价你本身(优缺点)。
并且面试的英语对话时间是最可能是15分钟,就对话几个问题,这仍是比较好准备的。另外,别担忧英语差进外企后就不行,其实在语境了,英语提高很快,我在试用期事后,就能和老外简单对话了,如今,虽然可能发音有口音(其实就不标准),但能够不只能和老外进行工做上的沟通,并且还能适当聊些其它话题。
我自己能够算个面霸,并且作过技术面试官,以个人感觉,(同时结合其它很多人的感觉),面试进外企,难度比想象中要低,更多程度上,难点在于态度(不作很好准备)和心态(不敢去面)。
在外企里,我体会下来的最大好处有以下三大类。
第一,这是个很是好的平台, 好比以前你在一个不知名的公司里干,可能你工做n年后,工资确实会加,但也就在一些小公司轮转了。 但在外企里,你干了3年,那么你后份工做的选择面就很大了,至少能考虑一些大公司,若是想要进互联网公司,至少工做经历这块能达标。
第二,培训机会不少,我经历过的就有数据库,前端,架构等方面的培训,并且讲师的能力都很高,除了从外面请老师,外企内部通常会按期有分享,一些大牛能说下本身的技术。
第三,比较稳定,并且属于本身的时间会不少,比较适合本身接触些新的技术。有时候,外企甚至像所大学研究院,往好了讲,能够实现工做和生活的负载均衡,我也据说有种说法,叫资本主义大锅饭。
整体感受下来,若是在外企里呆个几年,技术能力或多或少都会有提高,但更重要的是,综合能力提高得会很快。
通常来讲,在大公司,尤为是外企工做过的人,谈吐,协调以及为人处世的能力,会给人一种更加职业化的感受。
我不大想直接说在外企的感觉,因此这里经过些问题和例子来让你们自行感觉。
1 这是个问题,在国内的外企里,可否真正作有核心价值的内容,或者换种问法,外企会不会把一些核心技术和核心工做带到中国子公司?
2 在有些外企,好比干同一类活,通常来讲,国外员工的职级要比国内的高些。并且,国内员工干的活有时候要求会很细,好比葱丝怎么切,馒头怎么包,都会有具体的定制要求。
3 在外企,不只得和国内同事交流,更得在工做中和国外的同事交流,好比说要用一个新技术,可能审批链会到国外,因此不少事情上,得跟多的把精力用在沟通上。
4 外企的平均加班时间可能要比互联网公司要少,因此在外企里,团队建设和公司活动会比较多,我经历过的就有跳蚤市场,带娃上班,展会等,至于平时看场电影吃个饭,次数多的我都数不清了。
5 这也是个问题,你们能够想下,好比小张天天工做很是饱和,有加班,并且用到的是比较热门的互联网技术,而小李天天工做压力不大,平时会有比较多的本身时间,那么三年后,谁的提高快?
6 在外企的大概一年半时间里,我有精力写了两本书,并且我老婆那段时间生孩子,我也有足够多的精力来陪产。
这部分以一个冷笑话结尾,在外企,某人20岁时,他的外国上司是30岁,直到他35岁,他的外国上司仍是30岁。
这段话是写给已经在外企里的和打算进外企的同窗看的,以下先写点大的方向。
第一,千万得有远虑,若是没有机会接触到最新的技术,好比大数据,分步式架构,那么得多看点视频教材,别让本身太脱节。
第二,得抓住机会练外语,外企是个免费练外语的学校,你们能够对比下一些口语学校的收费。
第三,外企的开发方式会比较正规,你们能够经过实践敏捷开发等模式,让本身在软件管理方面有足够的提高。
第四,若是你感受开始吃老本了(技术进步不快,并且总是用现有储备的技术干活),那么你要么就得提高本身,要么就能够开始考虑了。
须要说明的是,当在外企里呆满2年后,就要避免“老油条”心态,由于这时,在公司里也混熟了,哪怕以养老的心态,推诿掉一些事情,也能让本身获得“及格”以上的评价。不过我就见过很多人所以脱节于主流技术框架体系。
以下说些能快速提高本身综合能力的建议。
1 外语就不说了,你们能够尽量地多参加视频或电话会议。
2 必定得多和别人交流,从而锻炼本身的沟通协做甚至是扯皮的能力。
3 多看看你领导(或者领导的领导)是怎么管理团队的,通常在外企里,很能学到管理能力,相比之下,在互联网公司,提高技术能力的速度会很快。
4 技术上,相比于其它种类的公司,你有足够多的时间学,那么不学白不学,你能够经过写博客,写书,看最新视频教程,本身搭建小型项目等手段来提高本身。
5 给本身制定个学习规划,通常来讲,再难的技术,学习3个月的之后,不敢说精通,但至少能够吹嘘了。这三个月如何安排:半个月了解大体内容以及准备环境,一个半月运行必要的代码,再经过一个月到网上查资料再深度学习,这样一年一来,保守估计能学到4种比较值钱的技能。我就这样学了sprign cloud,高并发组件等技术的。
各位在引用本文前,请和本人打个招呼,引用时请注明原出处。
本人以在外企的面试和工做经历,写了此文,限于篇幅,没法一一展开,你们能够经过回复来告知相关问题,好比如何进外企,如何准备面试等,或者问其余问题,本人会针对性的回答。
对你们来讲,外企不是惟一选项,但不失为一种提高本身的方式。可能有些大神感受外企不适合本身,那么也别以此理由来反对本文。
最后再说一遍,本文无心怂恿你们进外企,更无心为外企站台,本文的动机是想尽力帮助想进外企的同窗。若是你们感受本文有帮助,请点下方的推荐按钮来支持做者,最后再次感谢你们读完本文,