咳咳咳!花了一个星期的时间来回总结完善,当然希望能被更多人看到。文章内容适用于每一位学习Java的朋友!我觉得这篇文章很多东西也是写给自己看的,比如从大厂的招聘要求中可以看到哪些重要的能力,我们应该朝着什么方向努力?一起!下面这篇文章的部分内容出现在我之前的文章中,普通读者应该一眼就能看出来。废话不多说,开始写吧!我想每个技术人的梦想大概就是能够找到大厂的offer吧。我认为这是正常的。这不是我们的饭后谈资,而是每个技术人的追求。阿里、腾讯、美团、字节跳动、京东等大公司的技术氛围还是明显好于一些创业公司/小公司。如果你能在这样的公司实习几年,相信对你的能力提升还是很大的。当然,很多创业公司的锻炼很多,但大部分都是CRUD的工作,甚至还要同时写前端。刚毕业的时候做CRUD工作还好,但是一直这样下去,就会出问题。不管是笔试还是面试,都有规律可循,但千万不要想着怎么应对面试,糊弄面试官。这样做最终是在自欺欺人。这篇文章的目的也主要是让大家知道面试应该准备哪些方向,哪些方向可以提升自己的能力。网上已经有很多面试了,但是我觉得网上的各种面试只能作为一个参考,你的实际面试跟它还是有些出入的。另外,如果想在网上看别人的面对面经验,建议多看别人的成功案例,适当看别人的失败案例。当面读经是可以的。无论您是求职还是求学,这都是检验自身水平的更好方式。不过,也不要寄希望于各种面面的经历,要努力提高自己的综合能力。“80%的offer掌握在20%的人手中”这句话不无道理。虽然实力在决定你面试能否成功的因素中占据了很大比例,但是如果你的心态或者运气不好,你还是无法拿到满意的offer。先不说运气,就拿心态来说吧,不要因为面试失败而灰心或者怀疑自己的能力。面试失败后,总结失败的原因,你会发现后面的自己会越来越强大。另外,我只是就“如何准备大厂面试/如何提升自己的能力”分享一下自己的看法。以下大部分理论/话都经过反复测试和验证。如有不对或有不同想法的地方,敬请正大光明,不吝赐教。从招聘要求来看,大公司青睐什么样的人?首先从有两年左右开发经验的工程师的角度来看:我们来看一下阿里巴巴官网支付宝Java高级开发工程师的招聘要求,从下面的招聘信息可以看出,Java基础/集合类除外/多线程,这些能力极其重要:jvm等底层知识:既要懂理论又要实践;面向对象编程能力:我理解这不仅包括“面向对象编程”,还包括SOLID软件设计原则,相关阅读:《写了这么多年代码,你真的了解SOLID吗?》(我们老板的一篇文章)框架能力:不仅简单易用,而且还要了解原理和机制!理解原理和机制的基础是学习阅读源代码。分布式系统开发能力:Cache、消息队列等必须掌握。关键是能够用这些技术解决实际问题,而不是纸上谈兵。好感度:喜欢和尝试新技术,追求写出优雅的代码等。从应届毕业生的角度:我们还是看看阿里巴巴官网对应届毕业生招聘Java工程师的相关要求。结合阿里巴巴、腾讯等各大招聘官网对Java后端方向/后端方向应届生的要求,以下几点也会提升你的个人竞争力:内容是ACM);非常精通算法;参与过实际项目(如学校网站)熟悉脚本语言Python、Shell、Perl中的一种;熟悉如何优化Java代码,有编写更高质量代码的意识;熟悉SOA分布式知识尤其是理论知识;熟悉所用框架的底层知识,如Spring;有高并发开发经验;大数据开发等方面的经验自从我来到大学以来,我的许多非常有经验的老师经常告诫我们:“你必须有自己的特长,无论是好的技术还是其他能力”。我觉得这句话真的很有道理!刚才说到你要有特长,所以我在这里再强调一点:公司不要求你什么都擅长,但是在某一方面你必须要有过于平凡的优点。也就是说,我们不需要掌握每一项技术(你没有精力去掌握那么多技术),而是需要深入研究某项技术,其他的技术我们可以简单了解一下。技术方面可能会问什么问题?准备面试的话,首先要搞清楚技术面可能会问哪些问题!我直接用思维导图的形式展示出来!这样更直观,更详细。到了某个知识点,这张图就不介绍了,留个悬念,下一篇会详细介绍。上面的思维导图大概涵盖了技术面试中可能设计的技术,但是你不需要熟悉上面的每一个知识点。不要说你对你简单了解的技术很精通!如何获得大厂的面试机会?无论是社招还是校招,我们都有以下途径获得面试机会:在各招聘网站投递简历或关注大厂官网,随时投递简历(在线申请通过流程),查找前辈/熟人,帮助转介(可以帮助你避免网申简历筛选,这很不错,但你的简历还是要够好);Github优秀开源项目的博文/作者被看好,大厂内部人员邀请面试;你如何介绍自己?自我介绍通常是你和面试官第一次面对面的正式交流。以另一种方式考虑它。作为官员,你希望被面试者如何介绍自己?说你喜欢编程,花很多时间学习,你的爱好是打篮球,肯定不客气吧?我觉得一个好的自我介绍应该包括这些要素:简单来说,明确说明你的主要技术栈是你擅长的领域;专注于自己擅长的和自己的优势;着重突出自己的能力,比如自己定位bug的能力特别强大;还是从社招和校招的角度来举例吧!以下两个例子仅供参考。自我介绍不需要死记硬背。记住要说的要点。面试的时候,按照公司的就地演戏是可以的。另外,网上普遍建议准备两份自我介绍:一份给hr,主要是突出自己的经历,知道的编程技能;另一个针对技术面试官,主要是了解技术细节和项目经验。社会招聘:面试官您好!我叫杜秀儿。目前有1.5年工作经验,熟练使用Spring、MyBatis等框架,了解JVM调优等Java底层原理,有丰富的分布式开发经验。我离开之前的公司是因为我想得到更多的技术培训。在我之前的公司,我参与了分布式电子交易系统的开发。我负责搭建整个项目的基础设施,通过分库分表的方式解决了原有数据库和一些相关表过大的问题。目前,该网站最多支持10万人同时访问。闲暇之余,利用业余时间写了一个简单的RPC框架。该框架使用Netty进行网络通信。现在我已经开源了这个项目,并在Github上获得了2kStars!说到爱好,我更喜欢通过博客来整理和分享我学到的东西,现在我是多个博客平台的认证作者。在生活中,我是一个比较积极乐观的人,平时也会通过运动来放松一下。我一直想加入贵公司。我非常喜欢贵公司的文化和技术氛围。我期待着与您合作!招聘:面试官您好!我叫秀儿。大学期间主要利用课外时间学习Java和Spring、MyBatis等框架。在校期间参与了一个考试系统的开发,主要使用了三个框架:Spring、MyBatis、shiro。我主要负责后端开发,主要负责权限管理功能模块的搭建。另外,我在大学的时候参加了一次软件编程比赛,我和我的团队制作的在线订餐系统成功获得了第二名。业余时间也写了一个简单的RPC框架。该框架使用Netty进行网络通信。我已经开源了这个项目并在Github上获得了2kStars!说到爱好,我更喜欢通过博客整理和分享我学到的东西,现在我是多个博客平台的认证作者。在生活中,我是一个比较积极乐观的人,平时也会通过运动来放松一下。我一直想加入贵公司。我觉得我很喜欢你们公司的文化和技术氛围。我期待着与您合作!如何介绍我的项目经历?有项目的话,第一步就是技术面试,面试官一般都是跟自己说说你的项目。可以从以下几个方向去思考:对项目整体设计的感觉(面试官可能会要求你画一个系统架构图)你负责什么,做了什么,在其中扮演了什么角色这个项目?从这个项目另外,在项目描述中,最好能体现出你的综合素质,比如你是如何协调项目组成员协同开发的,或者当你遇到某个棘手的问题时,你是如何解决的,或者技术做了什么你在这个项目中用到实现了哪些功能,比如:使用redis做缓存提高访问速度和并发,使用消息队列削峰降低流量等,应该怎么研究?如何学习?对我来说最重要也是最重要的就是学习!看看别人分享的面经,看看我写的这篇文章。估计你只需要不到10分钟。但是这些东西毕竟是空洞的理论,平时的学习才是最重要的!如何学习?每个知识点的学习我觉得可以从这种方式入手:官网(最有可能是英文的,不建议初学者使用)。书籍(知识比较系统完整,推荐)。视频(通俗易懂,推荐,特别适合初学者。MOOC和bilibili上有很多学习视频,直接在上面搜索关键词就可以了)。在线博客(解决某个知识点的问题时可以看一下)。这里给大家一个建议。最好边看视频边练习边做笔记!!!最好边看视频边找书看。看完视频有不懂的知识点一定要尽快解决。解决方案?首先百度/谷歌,如果通过搜索引擎解决不了,可以找朋友或者认识的人。有必要学习各种框架吗?你必须学会??分配自己的时间。要学的东西很多,真的很多。找出哪些东西是重点,哪些东西刚好能看懂。不要把所有的精力都花在学习各种框架上。算法、数据结构、计算机网络真的很重要!另外,在学习过程中有一份参考文档是非常重要的,这对自己的学习很有帮助。我得到JavaGuide:https://github.com/Snailclimb/JavaGuide很大一部分原因就是因为这个。客观的说,与博客相比,JavaGuide中的内容由于更多人的参与而变得更加准确和完整。
