2020年的应届生自称为史上最难毕业生,每次到了求职季应聘者们总会陷入一个死循环:
同学A:大学期间没有考证书、没有进导师的实验室,面试过程中应该如何展示自己?
同学B:用了很长时间升本/读研却失败了,严格上来说已经不算应届毕业生了,但简历上项目经验还是空白...
同学C:在大学什么语言都学了一点,把那些作业拿出去面试,自己都觉得HR不会要我。
本人也有亲身体验,没有作品还铁着头去面试,结果被问得哑口无言,现场氛围尴尬得我可以用脚指头在地上挖出三室一厅。
当初本人在校园的时候参加了一些校企合作项目,并写过几次拿得出手的代码(在当时来说的确是的),但是在投简历之前我犹豫了,感觉自己的水平实在有限,别人真的会要我吗?
抱着试试水的心态,我在毫无准备且蜜汁自信的情况下去了第一家公司面试,结果出现了一开始的那一幕...
在痛定思痛之后,我把自己曾经的作业、代码、博客挑了一些出来,整理简历和作品重新出发,面试了几家公司后接二连三地收到了offer,接下来聊聊我的思想转变和准备过程:
01.
基础知识要打牢
如果你参加校招或者愿意接收应届生的社招,其实HR心里也有数,他们会更看重你的基础知识,应届生就像一张纯白的纸,强硬地要求他们有丰富的项目实战经验是不太现实的。
在简历和面试过程中我们需要放大自己:项目、比赛、作业、任何一次经历,都需要自己去挖掘、提炼,最后变成你的加分项。
所以我们不用因为没有太多的经验而自卑,其实应届生有应届生的优势,那就是可塑性强,只要你基础扎实、积极沟通,公司愿意花时间、花精力去培养你。
所以一般面试挂了的原因无非两点:技术和态度。基础知识不牢靠,挂;学习悟性太低、斗志低沉,挂;有沟通障碍,挂......
态度这块相信大家已经拿捏得死死的了,所以技术基础我们必须也得拿得出手,以下为大致的Java知识路线图,可供大家复习使用:
02.
充分利用开源项目
分享两个经典的开源网站:
www.gitee.com
www.github.com
无论是技术小白还是大牛,开源网站在程序员们的成长过程中起到非常关键的作用。
如何学习源码项目才能应付面试?
很多同学一上来就看源代码,导致看完之后云里雾里的,首先要弄清楚我们最主要的目的是学习如何实现关键技术和整体代码思路,功能、原理、框架这些都是我们的关注点,通过吸收这些技巧来提高我们的编程能力。
学习开源项目的几个层次,建议由浅至深地学习▼▼▼
层次一:阅读基础。看看基本工具、基本框架、文档、演示案例代码等等。
层次二:整理技术点。把项目中的代码整理一遍,里面用到了哪些技术点,他们分别解决了哪些问题?
层次三:击破模块。不要要求自己一下子完成整个项目,可以拆分技术模块,针对某个关键点深入研究,最后把这些技术模块联系起来,达到”总—分—总“的效果。
层次四:输出思考。总结、分析源代码后做相应的架构设计类文章并发布到社区,既完成了总结,又能让他人看到你的思维输出,从而给你相关的意见和指正。
层次五:推倒重来。试着根据作者的思维把整个项目重写一次(当然,如果你能改良一下会更好)
03.
展示自己的技术博客
面试的本质是信息沟通,你必须向面试官展示你是可以胜任这个职位并且在这一行长期地做下去。
这个时候你的技术博客就是一个很好的“佐证”:
如果一个人经常更新他的技术博客,虽然并不能代表他的技术有多好,但是他一定热爱着技术,且愿意在这上面花时间、花精力去深耕。
这里需要注意的是,我们不必为了面试而故意弄一些高端的代码在自己的博客上,面试官看中的是你对技术的态度,而不是内容。
04.
打分自检
想知道自己能力到哪了?不妨按照以下几个模块给自己打分:
1. Java开发环境 ••
1.JDK 安装、JDK 命令使用
•在Java环境出现问题后快速解决 +1分
2.IDE 安装和使用
•基本不用鼠标,熟练使用快捷键 +1分
•熟练使用Debug +1分
3.Linux 操作系统下程序开发和部署
•掌握Linux环境应用部署 +1分
•熟练掌握shell 命令 +1分
2. 编程基础 ••
1.Java 编程语法
•能编程实现鸡兔同笼、汉诺塔、斐波那契数列等 +1分
2.程序思维
•简单描述抽象、封装、继承、实现等概念 +1分
3.Java面向对象
•有自己单独设计过一个Java模型(类、接口、方法) +1分
4.编码规范
•看到不符合规范代码不能忍 +1分
3. Java核心API ••
1.io,lang,uitl 核心包
•通读了API 文档,并在头脑中形成地图可以在需要运用时能回想起来 +1分
•API 文档使用英文版 +1分
2.数据类型类、集合类
•阅读过源码,了解实现逻辑 +1分
•自己实现过代码,并通过测试 +1分
3.多线程
•阅读过util.concurrent下线程池API 源码 +1分
•自己实现过线程池并通过测试 +1分
4. JDK新特性 ••
1.反射、泛型、注释,自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入、Lambda、 Stream
•能清晰描述这些特性的使用场景并举出实例 +1分
5. Wbe后端技术 ••
1.HTTP
•阅读过RFC2616 +1分(如阅读过英文版再 +1分)
2.JavaWeb 基础
•通读javax.servlet API 文档,并能复述HTTP 请求响应流程 +1分
3.JDBC
•通读java.sql、javax.sql API文档,并能复述数据连接、实现流程 +1分
•能对sql 语句优化 +1分
4.集成部署
•熟练使用构建工具,如Maven进行项目集成 +1分
•在Linux 下熟练配置服务器环境,反向代理服务器,应用服务器、数据库 +1分
6. 性能调优 ••
1.熟悉MySQL性能调优 +1分
2.掌握Tomcat性能调优 +1分
3.掌握JVM性能调优 +1
7. 自我展示 ••
1.拥有GitHub账号,并持续push更新维护 +1分
2.有自己的域名、云服务器,运行自己写过的案例项目 +1分
3.有写作习惯,持续在博客/论坛/微信公号发布技术分享 +1分
05.
面试经验
1.扩展回答问题以外的东西
比如当HR问你制作过程,除了回答如何用技术实现之外,最好还加上这样做的理由是什么?
(扩展功能模块/减少内存压力/安全性/稳定性等等)
2.结合自身看法/经验去回答
在一次面试中,面试官问我“ArrayList和LinkedList的区别是什么?”
正好之前我用他们实现过接口的问题,除了正常回答“ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构”以外,我还结合了之前的实现过程举例,令面试官很满意。
3.不用害怕承认你不会
打肿脸充胖子这件事在面试过程中可千万别做!你要明白一般HR是按照梯度来问问题的,问题会越来越深入、越来越难。
所以遇到不会的是正常的,事实上有经验的程序员会直接说:“我不会,但如果公司需要用到这方面的技术我可以学习研究。”
最后
建议大家如果有条件的话每次去面试都要进行手机录音,方便了解自己在整个过程中哪里做得不好。
不管最后有没有拿到offer,我们都要进行这个复盘的过程,及时地查缺补漏。
如果是回答不了某个问题,就针对这方面的知识恶补;如果是因为太紧张导致沟通不顺利,就提前准备好说词......
在我看来,一个好的技术基础+一个认真踏实的态度=成功的基石。不要害怕失败,因为从来没有失败过的人,也从来没有成功过。
申请免费试听
只要一个电话
我们为您免费回电