面试经验总结(2018)

  • 前言

今年由于个人原因换了份工作,年底找工作不是很好找,面试不是很多。其实主要还是自己水平跟不上的原因,随着工作年限的增加,要求知识面会越来越广。后面找了一段时间终于有公司肯签下我这个全明星前锋(自我安慰)了,所以在这里对面试做个总结,提醒下自己要不断地学习,同时也希望可以给正在求职的童鞋一个参考吧。这个经验总结主要是从自身出发,有些地方也许写的不够好或者不够全面,希望可以理解一下。然后面试的问题答案我就将一些写的比较好的博客链接上去就行。

  • 适用对象

工作年限:0-2年
工作地点:深圳
工作岗位:java开发

  • 简历的书写

去面试用的简历建议使用markdown来编辑,而不是直接用招聘网站的模板。一方面给面试官一种干净整洁的第一印象,另一方面显得你比较专业。
这里推荐两种方式:
在线编辑:冷熊简历
本地编辑器:markdownpad 以及破解方法

  • 书写建议

(1)书写原则,可进行适当的包装,提高竞争力。
(2)项目经验不在多,在于含金量。如果你在职期间做了很多个项目,个人不建议你全部写上去,一般一年做三到四个即可,每个项目时间起码四个月。
(3)项目内容可以简单的写一下业务背景,主要的功能模块和用到的技术,然后再详细的描述下你在项目中担任的角色和做的工作。
备注:如果你的面试比较少,很大原因是你的简历写的不够好,不够吸引HR,,所以建议是修改简历,适当的包装一下来获取面试机会。

  • 面试技巧

说实话,每次面试的问题都不大相同,所以并没有针对性的准备,而且岗位要求只能简单的参考,因为很多时候问的问题都跟要求上面写的没啥关系。面试问题一般是从简历出发,看看你用到了哪些技术,具体是如何使用的,它的底层原理是如何实现的,使用这个存在哪些问题,有哪些更好的替代方案。
面试回答问题的时候,尽量体现你对知识的广度和深度。他问你一个点,如果你回答这个点,那么你会达到及格,如果你可以从这个点出发回答一个面,那么你将达到优秀,给面试官一种你不仅会用API也会去学习底层原理的可塑之才。其实很多面试问题都可以当做开放性问题来答,要大胆的说出自己对这方面的理解,这样会得到一些好的印象。
备注:我这里总结了下,面试少是简历写的不够好,不具有竞争力,面试不通过是自己表现的不好。所以我的建议是认真对待每一次面试,好好准备,用自己最饱满的精神去迎接挑战,切不可吊儿郎当,还没开始心就虚了。然后每次面完做个简单的总结,看看还有什么需要调整的,这样每次面试完你都会有所提高。

  • 面试前的准备

面试经常问到的范围是
(1)static和String的原理
(2)集合框架
(3)多线程和线程安全
(4)常用的设计模式
(5)SpringMVC的工作原理
(6)Spring的IOC和AOP底层原理和使用范围
(7)mybatis原理和如何避免Sql注入
(8)数据库部分:事务,索引,sql优化和大表优化

(9)Redis相关
(10)JVM虚拟机原理

  • 面试资料分享

以上面试常问的问题可在下面这两个连接找到答案:
别人的仓库:https://github.com/flypangzhi/JavaGuide
我的文档:https://github.com/flypangzhi/JAVA_Interview/blob/master/面试必备(2018版).docx

  • 基础部分

static、final、this、super关键字总结

  • 集合框架部分

这部分的内容基本每次都会问到,有时候面试官还会出一些场景题来问你,比如说同时往ArrayList和linkedList里面不断地放元素,在发生内存溢出的时候,哪个集合里面的元素会更多。或者你自己如何实现一个arrayList。所以我建议这部分最好可以去看源码或者源码分析,从代码上去学习和理解,切勿进行死记硬背。
首先我们先看下集合的大概情况:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

常见问题:你对集合有什么了解,你常用的数据结构有哪些?
回答建议:回答这个问题不必面面俱到将每个集合都讲一遍,说一下自己常用的集合即可,最好可以进行对比。可以按照下方这个顺序来回答,最好可以理解并用自己的语言总结概括下,这样印象会很深。

(1)从源码分析ArrayList
(2)为什么说ArrayList是线程不安全的
(3)JDK 1.8 LinkedList源码分析
(4)LinkedList线程安全问题
(5)说了这些之后建议对这两个做个对比总结,然后进入下一步
(6)HashMap实现原理及源码分析
(7)并发下HashMap为什么不是线程安全的
(8)关于HashMap最好可以讲一下JDK8数据结构有哪些变化,有时间可以去了解下红黑树。
(9)map中哪个是有序的,请看LinkedHashMap源码解析(JDK8)
(10)然后这时候可以说一句,这些是我常用的集合,但这些都不是线程安全的,然后就引出如何获取线程安全的集合。获取方法可以参考我的文档。
(11)ConcurrentHashMap实现原理以及源码解析
(12)CopyOnWriteArrayList实现原理及源码分析

基本上回答道这里就差不多了,也许你觉得内容有点多,但是从底层分析问题可以看出你知识的广度和深度,给面试官一种对于技术研究深刻的好感。

  • 多线程相关

常见问题:你对多线程有了解吗,如何实现线程安全?
回答建议:这个可以简单的说一下什么时候会出现线程安全,然后再说如何保证线程安全。具体可参考我的文档。然后在对里面用到的技术做一个详细的分析,比如说synchronized是如何实现线程安全。具体可参考Java并发编程指南

  • 常用的设计模式

这个可以主要讲三个:工厂模式,单例模式,代理模式。具体可参考设计模式相关文章,其实这里我建议在讲了三大框架原理之后再讲用到的设计模式会更好,可以突出联系。

  • 三大框架(springMVC,spring,mybatis)

一般问的是底层原理以及使用场景,还有会进行对比,比如说hibernate和mybatis的区别,或者说使用mybatis会有哪些优势。具体可参考我的文档。
mybatis底层原理分析

  • 数据库部分

主要还是索引数据结构和SQL优化问的比较多,把这系列的文章看完即可。
https://github.com/Snailclimb/JavaGuide/blob/master/数据存储/MySQL.md
如果你用过oracle的话,很多时候需要做mysql和oracle的对比,可参考我的文档。

  • linux基础知识

如果还有时间的话,建议去了解下linux常用的命令,这个是必备的知识。

  • 有空建议去学习的知识

git易百教程
springBoot和springCloub
redis菜鸟教程

最后,如果还有时间的话,建议去学习下一些新的知识,不仅可以提高自身水平,也可以给简历加点分。希望各位都可以找到自己心怡的工作,我一直觉得写代码不单单是一项工作,更是在设计作品,实现功能只是基本,如果有时间的话会进行优化让它性能更高更具维护性,这就需要自己不断地学习,希望你也能跟我一样,哈哈

猜你喜欢

转载自blog.csdn.net/qq_32574435/article/details/85217910