4000字干货长文!从校招和社招的角度说说如何准备大厂面试?

插个题外话,为了写好这篇文章内容,我本身前先后后花了一周的时间来总结完善,文章内容应该适用于每个学习 Java 的朋友!我以为这篇文章的不少东西也是我本身写给本身的,好比从大厂招聘要求中咱们能看到哪些重要的能力,咱们该朝什么方向努力?另外,推荐一下《70k Star Java开源项目出PDF阅读版本啦!》前端

共勉!git

下面的文章的部份内容在我早期文章中出现过,老读者应该一眼就能够看出来了。嘿嘿!废话很少说,开始正文!github


我以为每个技术人的梦想大概就是可以找一份大厂的 offer,我以为这很正常,这并非咱们的饭后谈资而是每一个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等大厂的技术氛围仍是要明显优于一些创业型公司 / 小公司,若是说可以在这样的公司锻炼几年,相信对本身能力的提高仍是很是大的。面试

ps:固然,不少创业公司的锻炼也很大,不过大部分都是 CRUD 的工做,你甚至还要同时去写前端。刚毕业的时候作 CRUD 的工做没什么,若是一直这样作下去就有问题了。

不管是笔试仍是面试都是有章可循的,可是,必定要不要想着如何去应付面试,糊弄面试官,这样作终究是欺骗本身。这篇文章的目的也主要想让你们知道本身应该从哪些方向去准备面试,有哪些能够提升的方向。redis

网上已经有不少面经了,可是我认为网上的各类面经仅仅只能做为参考,你的实际面试与之仍是有一些区别的。另外若是要在网上看别人的面经的话,建议即要看别人成功的案例也要适当看看别人失败的案例。看面经没问题,不管是你要找工做仍是平时学习,这都是一种比较好地检验本身水平的一种方式。可是,必定不要过度寄但愿于各类面经,试着去提升本身的综合能力。算法

“ 80% 的 offer 掌握在 20% 的人手 ” 中这句话也不是不无道理的。决定你面试可否成功的因素中实力当然占有很大一部分比例,可是若是你的心态或者说运气很差的话,依然没法拿到满意的 offer。数据库

运气暂且不谈,就拿心态来讲,千万不要由于面试失败而气馁或者说怀疑本身的能力,面试失败以后多总结一下失败的缘由,后面你就会发现本身会愈来愈强大。编程

另外,笔主只是在这里分享一下本身对于 “ 如何备战大厂面试 ” 的一个见解,如下大部分理论/言辞都通过过反复推敲验证,若是有不对的地方或者和你想法不一样的地方,请您敬请雅正、不舍赐教。后端

从招聘要求看大厂青睐什么样的人?

先从已经有两年左右开发经验的工程师角度来看: 咱们来看一下阿里官网支付宝Java高级开发工程师的招聘要求,从下面的招聘信息能够看出,除去Java基础/集合/多线程这些,这些能力格外重要:缓存

  1. 底层知识好比jvm :不仅是懂理论更会实操;
  2. 向对象编程能力 :我理解这个不只包括“面向对象编程”,还有SOLID软件设计原则,相关阅读:《写了这么多年代码,你真的了解SOLID吗?》(我司大佬的一篇文章)
  3. 框架能力 :不仅是使用那么简单,更要搞懂原理和机制!搞懂原理和机制的基础是要学会看源码。
  4. 分布式系统开发能力 :缓存、消息队列等等都要掌握,关键是还要能使用这些技术解决实际问题而不是纸上谈兵。
  5. 不错的sense :喜欢和尝试新技术、追求编写优雅的代码等等。

再从应届生的角度来看: 咱们仍是看阿里巴巴的官网相关应届生 Java 工程师招聘岗位的相关要求。

结合阿里、腾讯等大厂招聘官网对于 Java 后端方向/后端方向的应届实习生的要求下面几点也提高你的我的竞争力:

  1. 参加过竞赛( 含金量超高的是 ACM );
  2. 对数据结构与算法很是熟练;
  3. 参与过实际项目(好比学校网站)
  4. 熟悉 Python、Shell、Perl 其中一门脚本语言;
  5. 熟悉如何优化 Java 代码、有写出质量更高的代码的意识;
  6. 熟悉 SOA 分布式相关的知识尤为是理论知识;
  7. 熟悉本身所用框架的底层知识好比 Spring;
  8. 有高并发开发经验;
  9. 有大数据开发经验等等。

历来到大学以后,个人好多阅历很是深的老师常常就会告诫咱们:“ 必定要有一门本身的特长,无论是技术还好仍是其余能力 ” 。我以为这句话真的很是有道理!

刚刚也提到了要有一门特长,因此在这里再强调一点:公司不须要你什么都会,可是在某一方面你必定要有过于常人的优势。换言之就是咱们不须要去掌握每一门技术(你也没精力去掌握这么多技术),而是须要去深刻研究某一门技术,对于其余技术咱们能够简单了解一下。

技术面可能会问哪些方向的问题? 

你准备面试的话首先要搞清技术面可能会被问哪些方向的问题吧!

我直接用思惟导图的形式展现出来吧!这样更加直观形象一点,细化到某个知识点的话这张图没有介绍到,留个悬念,下篇文章会详细介绍。

上面思惟导图大概涵盖了技术面试可能会设计的技术,可是你不须要把上面的每个知识点都搞得很熟悉,要分清主次,对于本身不熟悉的技术不要写在简历上,对于本身简单了解的技术不要说本身熟练掌握!

如何获取大厂面试机会?

不管是对于社招仍是校招,咱们都有下面几种方式来得到面试机会:

  1. 各类招聘网站上投递简历或者关注大厂官网,随时投递简历(走流程的网申)
  2. 找到师兄师姐/认识的人,帮忙内推(可以让你避开网申简历筛选,仍是挺不错的,不过也仍是须要你的简历够棒);
  3. 博客发文被看中 /Github优秀开源项目做者,大厂内部人员邀请你面试;

如何作自我介绍?

自我介绍通常是你和面试官的第一次面对面正式交流,换位思考一下,假如你是面试官的话,你想听到被你面试的人如何介绍本身呢?必定不是客套地说说本身喜欢编程、平时花了不少时间来学习、本身的兴趣爱好是打球吧?

我以为一个好的自我介绍应该包含这几点要素:

  1. 用简单的话说清楚本身主要的技术栈于擅长的领域;
  2. 把重点放在本身在行的地方以及本身的优点之处;
  3. 重点突出本身的能力好比本身的定位的bug的能力特别厉害;

从社招和校招两个角度来举例子吧!我下面的两个例子仅供参考,自我介绍并不须要死记硬背,记住要说的要点,面试的时候根据公司的状况临场发挥也是没问题的。另外,网上通常建议的是准备好两份自我介绍:一份对hr说的,主要讲能突出本身的经历,会的编程技术一语带过;另外一份对技术面试官说的,主要讲本身会的技术细节和项目经验。

社招:

面试官,您好!我叫独秀儿。我目前有1年半的工做经验,熟练使用Spring、MyBatis等框架、了解 Java 底层原理好比JVM调优而且有着丰富的分布式开发经验。离开上一家公司是由于我想在技术上获得更多的锻炼。在上一个公司我参与了一个分布式电子交易系统的开发,负责搭建了整个项目的基础架构而且经过分库分表解决了原始数据库以及一些相关表过于庞大的问题,目前这个网站最高支持 10 万人同时访问。工做之余,我利用本身的业余时间写了一个简单的 RPC 框架,这个框架用到了Netty进行网络通讯, 目前我已经将这个项目开源,在 Github 上收获了 2k的 Star! 说到业余爱好的话,我比较喜欢经过博客整理分享本身所学知识,如今已是多个博客平台的认证做者。 生活中我是一个比较积极乐观的人,通常会经过运动打球的方式来放松。我一直都很是想加入贵公司,我以为贵公司的文化和技术氛围我都很是喜欢,期待能与你共事!

校招:

面试官,您好!我叫秀儿。大学时间我主要利用课外时间学习了 Java 以及 Spring、MyBatis等框架 。在校期间参与过一个考试系统的开发,这个系统的主要用了 Spring、MyBatis 和 shiro 这三种框架。我在其中主要担任后端开发,主要负责了权限管理功能模块的搭建。另外,我在大学的时候参加过一次软件编程大赛,我和个人团队作的在线订餐系统成功得到了第二名的成绩。我还利用本身的业余时间写了一个简单的 RPC 框架,这个框架用到了Netty进行网络通讯, 目前我已经将这个项目开源,在 Github 上收获了 2k的 Star! 说到业余爱好的话,我比较喜欢经过博客整理分享本身所学知识,如今已是多个博客平台的认证做者。 生活中我是一个比较积极乐观的人,通常会经过运动打球的方式来放松。我一直都很是想加入贵公司,我以为贵公司的文化和技术氛围我都很是喜欢,期待能与你共事!

如何介绍本身的项目经历?

若是有项目的话,技术面试第一步,面试官通常都是让你本身介绍一下你的项目。你能够从下面几个方向来考虑:

  1. 对项目总体设计的一个感觉(面试官可能会让你画系统的架构图)
  2. 在这个项目中你负责了什么、作了什么、担任了什么角色
  3. 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
  4. 另外项目描述中,最好能够体现本身的综合素质,好比你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能好比:用redis作缓存提升访问速度和并发量、使用消息队列削峰和降流等等。

我该如何学习?

如何学习?

最最最关键也是对本身最最最重要的就是学习!看看别人分享的面经,看看我写的这篇文章估计你只须要10分钟不到。但这些东西终究是空洞的理论,最主要的仍是本身平时的学习!

如何去学呢?我以为学习每一个知识点能够考虑这样去入手:

  1. 官网(大几率是英文,不推荐初学者看)
  2. 书籍(知识更加系统彻底,推荐)
  3. 视频(比较容易理解,推荐,特别是初学的时候。慕课网和哔哩哔哩上面有挺多学习视频能够看,只直接在上面搜索关键词就能够了)
  4. 网上博客(解决某一知识点的问题的时候能够看看)

这里给各位一个建议,看视频的过程当中最好跟着一块儿练,要作笔记!!!

最好能够边看视频边找一本书籍看,看视频没弄懂的知识点必定要尽快解决,如何解决?

首先百度/Google,经过搜索引擎解决不了的话就找身边的朋友或者认识的一些人。

学会各类框架有必要吗?

必定要学会分配本身时间,要学的东西不少,真的不少,搞清楚哪些东西是重点,哪些东西仅仅了解就够了。必定不要把精力都花在了学各类框架上,算法、数据结构还有计算机网络真的很重要!

另外,学习的过程当中有一个能够参考的文档很重要,很是有助于本身的学习。我当初弄 JavaGuide: https://github.com/Snailclimb... 的很大一部分目的就是由于这个。客观来讲,相比于博客,JavaGuide 里面的内容由于更多人的参与变得更加准确和完善。

若是你们以为这篇文章不错的话,欢迎给我来个三连(评论+转发+在看)!我会在下一篇文章中介绍如何从技术面时的角度准备面试?

做者介绍: Github 70k Star 项目 JavaGuide(公众号同名) 做者。每周都会在公众号更新一些本身原创干货。公众hao后台回复“1”领取Java工程师必备学习资料+面试突击pdf。

相关文章
相关标签/搜索