java求职面试指南

前言

 

    2015年可以说是Java程序员的“大年”,随着2014年11月乌镇互联网的闭幕,互联网行业是真的迎来了春天。2015年大量的创业型公司的兴起,对Java中高级职位的需求几乎可以用抢人的程度,跳槽人员的薪资普通在30%-50%的涨幅(一方面是因为市场需求、另一方面企业也在努力打破好多年员工待遇倒挂现象,即新入职员工的工资总比老员工高),更高的也不罕见,这是近几年来不曾出现过的。

    同时2015年也是Java 20岁的生日,Java一路走来,打破了多次“将死”的预言,现在依旧如日中天,在未来的很长一段时间内,将依然领跑于市场,

对于开发者的需求也依然居于其它语言之首。

     本文档是笔者和朋友曾经的面试经历,出于对市场和对技术发展方向的了解,近几年来,每年笔者都会参加一些公司的面试,2015年笔者以及朋友换工作时,更是前前后后面试20家工公司有余(多数是公司反馈信息太慢,有的是待遇不合理)斩获了不少OFFER。笔者在动笔之前曾经把浙江图书馆的Java面试相关的书都借阅了一遍,汲取精华。

本文档的内容主要定位Java技术相关,这块也是Java面试中最重要的环节,所涉猎不足部分也会在以后慢慢的加入。文档的内容主要适合0-4年工作经验的求职者,对于五年以上工作经验的朋友,基础已经扎实,甚至很多公司面试都不涉及技术点了,只是简单聊聊工作中的一个些项目开发经验就下OFFER了;所以本文档的帮助也不是很大了。

    下面对于本文档作一下简单说明:

    1、本文档旨在帮助求职者快速复习Java面试的知识点,而不是学习参考书,所以涉及的内容宽泛但不深入。

    2、本文档适合读者:一是突然间决定换工作,没有太多时间准备系统复习;二是准备换工作想了解一下市场技术方向;三是毕业不久的求职者对技术面试环节不太了解;四是感觉网上复习题信息量太大,没有层次,针对性不强。

    3、笔者一直想写一本Java相关的书,本文档的知识会穿插在未来的书中,所以文档中的内容不会全部免费公开(书写好后,文档会开源),但此文档中部分知识点是引用网上优秀的博客、论坛中内容,对于此部分内容是公开的。

4、本文档重点针对Java技术后端相关的面试部分,对于UI前端技术、数据库、数据结构、智力考察等部分在以后的版本中会陆续加入。

5、有些参考答案可能写的很长很多,主要是出于求职者能够很好了解的角度考虑,实际面试时可以根据自己的理解回答。

    6、对于文档中如果存在错误、不当之处欢迎指出,如果有好的建议也可以联系我们[email protected],我们将努力改正,不断完善,谢谢支持。

 

 

收获 offer,挑战高薪,全本请访问:http://shop113074087.taobao.com

 

 

 

目录

第一部分 应聘求职... 7

第01章 简历篇... 7

第02章 应聘流程... 8

第03章 福利如何谈... 9

第二部分 CoreJava基础... 10

第04章 解读API 10

4.1 Object常用的方法... 10

4.2 String与StringBuffer区别... 10

4.3  Vector,ArrayList, LinkedList的区别... 10

4.4  HashTable, HashMap, ConcurrentHashMap区别... 11

4.5  equals()和hashCode()作用... 12

4.6  sleep()和wait()区别... 13

4.7  IO与NIO的区别... 13

4.8  Synchronized和Lock区别和用法... 14

4.9  Final、Finally、Finalize的区别... 15

4.10  OverLoad与Override的区别... 15

4.11  Collection与Collections的区别... 16

第05章 Java基础知识... 16

5.1 “==”与“equals”区别... 16

5.2 接口和抽象类的区别... 17

5.3 运行时异常和一般异常的区别... 18

5.4 序列化和反序列化... 18

5.5  Java实现浅克隆与深克隆... 19

5.6 枚举可以序列化吗... 20

5.7 Java创建对象的方式... 20

5.8 能否自己定义一个java.lang.String类... 21

5.9 Java线程池的了解... 21

5.10  Return和finally语句块的顺序... 22

5.11  Java静态变量与实例变量的区别... 22

5.12  同步与异步区别及使用场景... 23

5.13  Java堆和栈的区别... 23

5.14  Java多线程快速问答... 23

第06章 JVM相关... 25

6.1 JVM的工作原理... 25

6.2 类的加载机制... 26

6.3 GC的工作原理... 27

6.4 Java的反射机制... 28

6.5 JDK性能分析工具及应用... 28

第三部分 J2EE框架相关... 错误!未定义书签。

第07章 Servlet&JSP. 错误!未定义书签。

7.1 Servlet的生命周期... 错误!未定义书签。

7.2 Servlet3.0有哪些新特性... 错误!未定义书签。

7.3 Servlet监听器的作用... 错误!未定义书签。

7.4 forward与redirect区别... 错误!未定义书签。

7.5 Session与Cookie的区别... 错误!未定义书签。

7.6  如何实现一个自己的session. 错误!未定义书签。

7.7 Http请求中Get和Post区别... 错误!未定义书签。

7.8  JSP中动态INCLUDE与静态INCLUDE的区别... 错误!未定义书签。

7.9  Servlet是否线程安全并解释原因... 错误!未定义书签。

第08章 Struts1.x框架... 错误!未定义书签。

8.1 Struts1的MVC实现... 错误!未定义书签。

8.2 Struts1的工作原理... 错误!未定义书签。

8.3 为什么要用Struts1. 错误!未定义书签。

8.4 Struts1的优缺点... 错误!未定义书签。

8.5 Struts1常用的标签库... 错误!未定义书签。

第09章 Struts2.x框架... 错误!未定义书签。

9.1  Struts2的工作原理... 错误!未定义书签。

9.2  Struts2有哪些优点... 错误!未定义书签。

9.3  为什么要用Struts2. 错误!未定义书签。

9.4  struts2 如何获取request(session) 错误!未定义书签。

9.5  Struts2中拦截器与过滤器的区别... 错误!未定义书签。

9.6  什么是ValueStack和OGNL. 错误!未定义书签。

第10章 Hibernate框架... 错误!未定义书签。

10.1  Hibernate工作原理... 错误!未定义书签。

10.2  简述Hibernate中对象的状态... 错误!未定义书签。

10.3  Load()与Get()的区别... 错误!未定义书签。

10.4  Hibernate缓存机制... 错误!未定义书签。

10.5  Hibernate悲观锁与乐观锁的区别... 错误!未定义书签。

10.6  update()和saveOrUpdate()的区别... 错误!未定义书签。

10.7  Hibernate的优缺点... 错误!未定义书签。

第11章 Mybatis框架... 错误!未定义书签。

11.1  resultType和resultMap的区别... 错误!未定义书签。

11.2  Mybatis中“#”与“$”区别... 错误!未定义书签。

第12章 Spring框架... 错误!未定义书签。

12.1  为什么要用Spring. 错误!未定义书签。

12.2  简述一下Spring结构... 错误!未定义书签。

12.3  什么是IOC(DI)... 错误!未定义书签。

12.4  AOP的实现原理... 错误!未定义书签。

12.5  Spring的生命周期... 错误!未定义书签。

12.6  BeanFactory和ApplicationContext原理及作用... 错误!未定义书签。

12.7  Spring实例化Bean的方式... 错误!未定义书签。

12.8  Spring各种事务实现及区别... 错误!未定义书签。

12.9  Spring事务属性... 错误!未定义书签。

12.10  Spring编程事务与声明事务的区别... 错误!未定义书签。

12.11  SpringMVC的工作原理... 错误!未定义书签。

第13章 WebService技术... 错误!未定义书签。

13.1  什么是WebService. 错误!未定义书签。

13.2  WebService常用实现引擎并说明... 错误!未定义书签。

13.3  WebService工作原理... 错误!未定义书签。

13.4  可以谈一下什么是SOA吗... 错误!未定义书签。

第14章 综合部分... 错误!未定义书签。

14.1  常用哪些设计模式及使用场景... 错误!未定义书签。

14.2  XML常用的解析方式... 错误!未定义书签。

14.3  Apache、Tomcat、JBoss、WebLogic的区别... 错误!未定义书签。

14.4  动态代理的原理及实现... 错误!未定义书签。

14.5  Struts与Spring的区别... 错误!未定义书签。

14.6  Mybatis与Hibernate的区别... 错误!未定义书签。

14.7  Struts1与Struts2的区别... 错误!未定义书签。

14.8  对NoSQL数据库有什么理解... 错误!未定义书签。

14.9  Memcached的工作原理... 错误!未定义书签。

14.10  数据库连接池的机制... 错误!未定义书签。

14.11  Maven的工作原理... 错误!未定义书签。

14.12  谈一下对web.xml的理解... 错误!未定义书签。

14.13  Encache,Memcached的区别... 错误!未定义书签。

14.14  能谈一下linux常用的命令吗... 错误!未定义书签。

14.15  如何设计高并发下的秒杀功能... 错误!未定义书签。

14.16  谈一下高并发框架的设计... 错误!未定义书签。

第四部分 数据库技术... 错误!未定义书签。

第15章 JDBC操作部分... 错误!未定义书签。

15.1  Statement与PreparedStatement的区别... 错误!未定义书签。

15.2  JDBC连接数据库的步骤... 错误!未定义书签。

第16章 MYSQL部分... 错误!未定义书签。

16.1  Mysql的常用连接方式... 错误!未定义书签。

16.2  Mysql乱码如何解决... 错误!未定义书签。

16.3  Mysql如何获取系统时间... 错误!未定义书签。

第17章 ORACLE部分... 错误!未定义书签。

17.1  oracle中 rownum与rowid的理解... 错误!未定义书签。

17.2  union和union all有什么不同... 错误!未定义书签。

17.3  truncate和delete的区别... 错误!未定义书签。

17.4  谈谈你对SQL优化的看法... 错误!未定义书签。

17.5  存储过程与函数的区别... 错误!未定义书签。

第五部分 笔试与上机... 错误!未定义书签。

第18章 程序阅读... 错误!未定义书签。

18.1          读代码写执行结果... 错误!未定义书签。

18.2          String经典系列... 错误!未定义书签。

18.3          分析程序是否异常... 错误!未定义书签。

第19章  上机编程... 错误!未定义书签。

19.1          写出一个单例模式... 错误!未定义书签。

19.2          按字节截取的字符串... 错误!未定义书签。

19.3          多线程编程题... 错误!未定义书签。

19.4          写一个冒泡算法... 错误!未定义书签。

19.5          向int数组随机插入100个数... 错误!未定义书签。

第六部分 离职流程... 错误!未定义书签。

20.1          离职信... 错误!未定义书签。

20.2          离职流程... 错误!未定义书签。

第七部分 附录:简历模板... 错误!未定义书签。

第八部分 附录:求职信... 错误!未定义书签。

第九部分 附录:加薪申请... 错误!未定义书签。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第一部分 应聘求职

    什么时候适合找工作?在网上搜索的话,会有很多人回复说九月是毕业生进入社会的高峰期,金九银十也是换工作的的黄金时期。貌似现在什么东西都能和金九银十扯上关系,房产、旅游、找工作等等;我感觉毕业生如果等到金九银十再去找工作,估计很难找到合适的了。现在的大学生貌似六七月毕业,而很多学校最后半学期就是让学生做毕业设计和找工作的时间,春节到校招生的企业也是最多的。并不能否定九月十月不适合找工作,但建议找工作要趁早,如果你准备好了,什么时候都可以找工作,而且越早越好。

对于社会有工作经验的朋友来说,好多人可能认为年初最适合找工作,因为拿了年终,而且好多企业会在年初提供很多职位;但我感觉年初不适合找工作,而适合入职,最好在年底把新的工作搞定。

去年年末对于51JOB,智联,猎聘等专业的招聘网站提供的职位进行了分析,年底的职位可能没有年初多,但从待遇福利和公司规模来看,都很不错。而且从周围的朋友来看,过一个春节,回家放松得很彻底,回来两三周才找到感觉,这个时候去面试,成功率低很多。当然上面多是个人建议,工作不爽了,随时可以找;尤其是IT行业,在一家公司呆的越久,与新技术脱离的越远,找一个满意的工作对自己和对公司来说,都是有利的。

第01章 简历篇

       如果你是一个刚毕业的大学生,建议可以到51job或其它网络上了解一下简历的注意事项,上面讲的很细致,这里就懒得把那么多细节拉下来占用篇幅,请大家一定要慎重对待简历,好的简历就是一次面试机会,如果你的简历没有写好,那么接下来的内容看了也无用武之地了,这里简单介绍一下简历的注意事项,在附录中,我会放上一个简历模板供大家参考使用。

1、基本信息简单明确

       像姓名、性别、学校专业、学历、电话、电子邮箱、应聘职位这些是必须的,绝对不能被简洁的,至于出生年月,政治面貌之类的可以选择;薪资和地址之类的个人建议没有必要写,如果写上薪资要求的话,一定要加上左右两字或者给出一个范围,给自己留一些谈判空间。

 

2、信息要真实

  诚信是最基本的沟通前提,无论对于用人企业还是以后与同事相处,如果简历中没有太多引人注意的地方,可以通过自荐信之类的弥补(后面附录中会提到);不要想通过制造虚假的简历信息来获得职位,IT这个行业求职时要提供毕业证,学位证,有经验的还要提供离职证明,很多公司会对你的简历信息进行验证(阿里就有求职者的档案库,对于不良求职者可能会进入黑名单,永远没有录用的机会),所以信息尽可能的真实,如果刚毕业的学生感觉自己的简历太空,就把实习工作和毕业设计都写进去充实一下。如果简历中的一些硬件信息达不到用人单位的要求,可以变通一下,把这些信息从简历中删除,毕竟IT行业更重实力,通过OFFER后再和HR解释清楚就行了。

 

3、谦虚适度、切忌张扬

       刚毕业的求职者,简历上往往会看到很多精通CoreJava,精通SSH……总之简历上很多精通,精通这个词就是属于很张扬的词,可以说实际面试中十个难有一个求职者达到技术要求的精通级别。自信固然不可少,但切忌太张扬,容易让面试人员产生不好的感觉,感觉你有点华而不实,所以除了精通外还可以用一些熟练,这是一个很狡猾的词。虽然这高调的张扬不提昌,但过分谦虚也不行的,比如一个简历上写满了“会一点”、“了解”、“学过”之类的,企业单位虽然喜欢诚实,但付给你钱是让你干活的,这样的简历连HR一看就知道干不了事,可能都到不了面试官手里。

  另外简历上的东西要和你的实际经验符合,别为了显示你的知识面广,经验丰富,乱七八糟的东西全写了,要知道你简历上的东西都是面试官可能会问到你的问题,写简历前要清楚写的每一项技术能不能禁得起面试官的提问,好多求职者都是简历投出后,上面的内容自己都不太清楚了,这点是很忌讳的。

 

4、项目经验不易过长

       简历项目经验不易太多,一般四到六个为宜,写上你认为最有代表性的,然后描述详细一点就OK了;不要把那些参与三两行代码的项目都写上,面试官如果较真起来,可能认为你对项目了解不深入,留下负面印象;如果项目经验实在太多了,也可以针对职位来修改简历中的项目经验,这样命中率更高。其实优秀的员工一般都有自己钟情的公司,希望大家以后也都有这样的公司。

 

5、求职信

       这个主要针对刚毕业的求职者,实际工作经验可能还没有,简历写出来有时候会很空白,在海量的简历中很容易被埋没;写一封求职信将有助于你获取更大的面试机会。求职信的目的是让对方了解自己、相信自己、录用自己,它是一种私人对公并有求于公的信函。但格式有一定的要求,内容要求简练、明确,切忌模糊、笼统、面面俱到。

 

第02章 应聘流程

1、应聘流程图

 

 

2、面试前的工作

    I、写简历,除了要有一份电子档的简历外,还要在各大主要的招聘网上写一下简历,如51job,智联,猎聘,100%OFFER,CSDN招聘专栏等。对于刚毕业的学生,主要推荐前两个,职位多;对于有一定工作经验,重点推荐后三种,含金量高,待遇一般都不错。

   II、 投简历约面试,写简历的目的就是投给用人单位以获得面试机会;切忌海投,盲目投,甚至乱投,可能会被HR打入黑名单;投简历一定要有针对性,一定要看清公司招聘的职位信息。约面试时,要问清时间,如果是当天要求面试的,最好协商一下是否可以晚一天,以便有时间了解一些公司信息和确认一些职位信息,这个很有必要;面试时出于礼貌最好早到十来分钟,如果因为意外可能迟到,最好给HR电话说明一下。

   III、面试前一天根据招聘的职位信息,看一下此"Java面试指南",如果没有包含的网上查一下,做到有备无患,知已知彼。

第03章 福利如何谈

1、薪资多少合适

    首先薪水福利是不能比的,同一年同一班出来的同学,工作几年后薪资差别是相当大的,不同的城市和地区也差别较大。对于有工作经验的朋友跳槽的话,可以参考自己的同学,和自己工作经验工作强度相似的朋友(不要盲目比较,毕竟技术能力,行业背景不同,而且工作强度、工作压力也不同),一般跳槽薪资比上家会浮动30%左右;如果实在没法参考,可以参考网络上传的一个比较牛的计算公式:3k+工作年限*2。对于刚毕业的求职者来说,经验比薪资更重要,但作为IT的同行建议坚决不能干那种白出力的活,一般实习本科大概4k+,专科一般少0.5K。

 

2、福利如何谈

    面试成功后,和HR谈福利待遇时,千万不要只谈工资不谈福利,尤其是刚毕业的求职者没什么经验。谈薪资福利可以从以下几方面入手:第一,谈薪资的时候要问清是税前还是税后,是试用期工资还是转正后的工资,试用期是付全额还是付全额的80%.第二,公司有没有年终奖,发多少,什么时候发?第三,公司福利怎么缴,是五险一金还是三险一金,缴费基数是多少?记住千万别忘记问一金(公积金,对以后买房可能很有帮助),然后再问清试用期给不给缴。第四,公司加班制度,有没有加班补助,好多人受不了加班太多,所以入职时最好问清楚。第五,像其它的旅游了,体检了,餐补了,高温补贴,过节礼品等其它的一些东西可以都问清楚。

你可能感兴趣的:(java常见面试题)