半个多月的找工作时间,不是在去面试路上,就是在面试中,经历了大概有近10家的面试,虽然很多家都是一回了无音讯,对自己收获还是有的,至少让自己认识到了自身基础不牢固和技术知识面的狭隘。之前从事的工作主要都是开发企业级的应用项目,对多网络编程,多线程,高并发等相关的技术知之甚少。
面试的一般套路都是:先是自己简单的介绍一下,然后介绍一些自己做过哪些拿得出手的项目,面试官一般会根据你项目中所涉及到的开发技术对你提问,如果注重基础的一般都会问较多的java基础的问题。
下面总结一下面试中被问到的问题:
1、java基础方面:
1】java集合有哪些?hashmap和hashtable的区别?hashmap底层是如何实现的?对hash算法的了解?
2】 java异常与错误?运行时异常有哪些?
3】string,stringbuffer,stringbuild的区别?String a = new String(“abc”),创建了几个对象?
4】对java虚拟机jvm的了解,什么是GC,为什么要有GC?内存溢出如何解决?虚拟机内存包括哪些?堆,栈的区别?他们的内部结构如何?
5】说说你了解的设计模式?
6】对java泛型的了解,什么是java的反射机制,如何实现的?
7】对数据结构排序算法的掌握,说说冒泡排序、快速排序等基本实现的逻辑。
8】如何实现同步,如何实现多线程,对同步和多线程的深入理解。
9】Servlet是如何工作的?深入理解servlet?listener和filter的作用与区别?
2、流行框架方面:
1】说说对spring的理解,IOC的实现原理,AOP的实现原理及项目中具体的实际使用在哪?
2】Hibernate中的对象有哪三中状态?它们之间是如何转换的?常用接口有哪些?分别什么作用?
3】Hibernate与Mybatis的优缺点对比?
4】SpringMVC的实现流程?是否去查看了底层的实现代码?
5】常用的SpringMVC注解,分别有什么作用?
6】对Hibernate缓存机制的理解,如何实现的?
7】Spring如何实现注入Bean?
3、数据库相关:
1】数据库表空间创建、授权、创建表的一系列SQL语句。
2】数据量超大表查询速度慢优化的思路?
3】left join,right join,inner join的用法?
4】not in 与 not exist的比较?
5】数据库实现分布式的一般思路?
6】创建表索引的目的是什么?加索引的根据是什么?对索引的深入了解。
4、项目上用到的相关技术:
1】什么是单点登录,如何实现单点登录?
2】安全框架shiro的实现原理,具体如何做到访问权限的控制?
3】用到哪些缓存技术?实际项目中缓存了哪些数据?
4】maven的用途,以及它有什么优势?
5】对Linux的理解?
6】SVN、Git等代码冲突如何解决?
7】是否用过工作流?如何实现的?
8】项目部署分布式如何实现?
5、其他问题:
1】你的优势在哪里?
2】在项目过程中遇到过哪些问题?是如何解决的?
3】架构师需要具备哪些技术,或者说什么样的人可以称为架构师?
4】自己的职业规划是什么?
5】一句话概括自己身上的优缺点?在朋友同事眼中你是一个什么样的人?
6】你有什么问题还要问我们的吗?
7】一个5L的水杯,一个3L的水杯,如何测量出4L的水?
8】一个封闭的房间里有3盏灯,房间外面有3个开关,线路连接完好,只进房间一次,如何判断出哪个开关控制的是哪一盏灯?