前言

因为要最近要面试,冲刺挑战一下,下面是准备的中级面试题
1.自己面临题目
2.蘑菇云美团题目
3.J2SE基础题目

第一章节:高频技术点题目

数据结构

1、常用的集合类有哪些?比如List如何排序?
2、说一下list,set,map的区别。
3、Vector、ArrayList和LinkedList区别?
4、hashtable和hashmap的区别
5、hashmap的底层实现方式是什么
6、hashCode和equals关系

线程以及并发安全

1、线程的创建方式
2、线程的有几种状态
3、ThreadLocal 的的实现原理是什么?什么情况下会导致内存泄漏?
4、wait sleep 的区别
5、Java 线程池的原理,有哪些核心参数。当队列跟线程池都满了。才有什么处理机制?包括哪些处理机制。
6、多线程会遇到那些问题?怎么解决死锁?

数据库以及索引

1、mysql 的引擎机制分为哪几种?每种有哪些特点。聚合索引的如何使用?
2、mysql 的事务类型?默认的事务机制是什么?
3、mysql数据库优化,你是如何优化的
  1.建表建议不要使用外键,字段大小要适宜,text格式字段单独一张表,数据量大的表拆表
  2.不要将逻辑写到sql语句中,用java代码处理逻辑
  3.sql函数使用:例如尽量避免使用in或者like,大于小于,不等于这类关键字,inner join 关联尽量不要超过三张表,exis使用
  4.数据量大时候,索引的使用,读写分离,集群
  5.热点数据使用缓存处理
  6.防止sql注入等等
4、数据库的读写分离,是如何处理的?你们项目的处理逻辑是什么?有过哪些性能优化经验?

spring MVC请求原理

springMvc请求原理:请求--> DispatcherServlet--> HandlerMapping-->通过策略再返回ModelAndView视图--》解析为View--〉再由DispatcherServlet返回用户

spring 原理以及事务

1、是否看过spring的源码。分析它的实现模式。
2、spring bean 是什么周期 springmvc 运行周期是什么?spring事务传播机制包括哪些?为了解决什么?

基础

1、Servlet的生命周期?
2、concurrenthashmap 的实现原理。HashMap 的默认容量是多少,concurrenthashmap 与hashtable 的区别是什么?
3、String,StringBuffer,StringBuilder的区别。
4、反射机制的使用场景。
  1.在运行时判断任意一个对象所属的类;2.在运行时构造任意一个类的对象;
  3.在运行时判断任意一个类所具有的成员变量和方法;4.在运行时调用任意一个对象的方法;5.生成动态代理
5、volatile 修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。
6、Java中的异常有哪几类?分别怎么使用?
7、Java中一个字符占多少个字节,扩展再问int, long, double占多少字节
8、static局部变量与全局变量的区别

工具以及其他

1、找一个你最擅长的项目,说说你充当的角色 什么? 主要做了哪些模块。负责什么?
2、redis的持久化类型分为哪些?
3、redis 的nosql 如何使用,数据结构有哪些?
4、MemcacheDB与Redis的区别。redis 的数据结构有哪些
5、设计模式,代理模式,策略模式
6、aop实现原理
7、git和svn区别
8、JVM内存结构,GC算法,CMS、G1的原理
9、Java有自己的内存回收机制,但为什么还存在内存泄露的问题呢?
11、JVM内存模型,GC回收机制,有哪些算法。垃圾回收的过程是如何处理的?

第二章节:BAT、网易、蘑菇街

javaSE

1. 九种基本数据类型的大小,以及他们的封装类。
2. Switch能否作用于string做参数
3. equals与=区别
4. Object有哪些方法
5. Java的四种引用,强弱软虚,用到的场景。
6. hashcode作用
7. ArrayList、LinkedList、Vector的区别。
8. String、StringBuffer与StringBuilder的区别。
9. Map、Set、List、Queue、Stack的特点与用法。
10. HashMap和HashTable的区别。
11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
12. TreeMap、HashMap、LindedHashMap的区别。
13. Collection包结构,与Collections的区别。
14. try catch finally,try里有return,finally还执行么?
15. Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况。
16. Java面向对象的三个特征与含义。
17. Override和Overload的含义去区别。
18. Interface与abstract类的区别。
19. Static class 与non static class的区别。
20. java多态的实现原理。
21. 实现多线程的两种方法:Thread与Runable。
22. 线程同步的方法:sychronized、lock、reentrantLock等。
23. 锁的等级:方法锁、对象锁、类锁。
24. 写出生产者消费者模式。
25. ThreadLocal的设计理念与作用。
26. ThreadPool用法与优势。
27. Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等。
28. foreach与正常for循环效率对比。
29. Java IO与NIO。
30. 反射的作用于原理。
31. 泛型常用特点,List<String>能否转为List<Object>。
32. 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
33. 设计模式:单例、工厂、适配器、责任链、观察者等等。

JVM

对GC的理解
垃圾回收和垃圾泄漏

数据结构与算法

1. 链表与数组。
2. 队列和栈,出栈与入栈。
3. 链表的删除、插入、反向。
4. 字符串操作。
5. Hash表的hash函数,冲突解决方法有哪些。
6. 各种排序:冒泡、选择、插入、希尔、归并、快排、堆排、桶排、基数的原理、平均时间复杂度、最坏时间复杂度、空间复杂度、是否稳定。
7. 快排的partition函数与归并的Merge函数。
8. 对冒泡与快排的改进。
9. 二分查找,与变种二分查找。
10. 二叉树、B+树、AVL树、红黑树、哈夫曼树。
11. 二叉树的前中后续遍历:递归与非递归写法,层序遍历算法。
12. 图的BFS与DFS算法,最小生成树prim算法与最短路径Dijkstra算法。
13. KMP算法。
14. 排列组合问题。
15. 动态规划、贪心算法、分治算法。(一般不会问到)
16. 大数据处理:类似10亿条数据找出最大的1000个数………等等

第三章节:J2SE基础题目

示例 1 : 面向对象的特征有哪些方面?

继承封装多态抽象

示例 2 : String是最基本的数据类型吗?

String是类对象,八大对象:byte,long,short,char,int,float,double,booble

示例 3 : int 和 Integer 有什么区别?

int是基础类型,Integer是类类型,之间转换是自动封箱和自动拆箱

示例 4 : String 和StringBuffer的区别?

String长度不可变,StringBuffer【字符数组存放数据】长度可以变,之间可以转换

示例 5 : 运行时异常与一般异常有何异同?
示例 6 : 说出ArrayList,Vector, LinkedList的存储性能和特性。

ArrayList和Vector 两者都继承了抽象类AbstractList,vector线程安全,说出ArrayList线程不安全,数组结构,查询快,插入慢,LinkList双向链表结构

示例 7 : Collection 和 Collections的区别。

Collection是接口,List,set的父接口,Collections是工具包

示例 8 : &和&&的区别

& 有两个作用,分别是 位与 和 逻辑与
&& 就是逻辑与

示例 9 : HashMap和Hashtable的区别

hashmap可以存放空,线程不安全,hashtable不能存放空,线程安全,里面有syn锁,效率低

示例 10 : final, finally, finalize的区别

final,修饰方法不能重写,修饰类不能被继承,修饰变量只能被赋值一次
finally 异常抛出,一定会执行

示例 11 : Overload和Override的区别,即重载和重写的区别。 Overloaded的方法是否可以改变返回值的类型?

重载:同一个类,同一个方法名,参数不一样,返回值可以改变
重写,继承父类,对方法重新写重写

示例 12 : Error和Exception有什么区别?

都是实现 Throwable接口,error是jvm级别报错,Exception是代码逻辑层面

示例 13 : abstract class和interface有什么区别?

接口和抽象类:抽象类只能被继承,接口必须要实现,抽象类可以提供抽象方法和实现方法

示例 14 : heap和stack有什么区别

heap堆   存放对象    存取慢
stack栈 存放基本类型方法,对象地址    存取快

示例 15 : GC是什么? 为什么要有GC?

垃圾回收,变量、对象没有引用自动释放的过程

示例 16 : short s1 = 1; s1 = s1 + 1;有什么错?

强转错误

示例 17 : Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

12和11

示例 18 : String s = new String("xyz");创建了几个String Object?

两个对象

示例 19 : Java有没有goto?

示例 20 : 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

示例 21 : List, Set, Map是否继承自Collection接口?

List和set都是继承conllection,单结构存储,map是双向链表结构,没关系

示例 22 : abstract的method是否可同时是static,是否可同时是synchronized?

示例 23 : 数组有没有length()这个方法? String有没有length()这个方法?

数组是size,没有length属性,String是length方法,集合是size

示例 24 : Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?

例如hashset,1、hashcode相同,还需要用equals来比较对象,2、hashcode不相同,对象一定不一样

示例 25 : 构造器Constructor是否可被override?是否可以继承String类?

示例 26 : switch 是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch 可以作用在 byte,short,int String,Enum,不能作用long,1.7后才可以支持String,因为底层其实将String转换了hashcode

示例 27 : try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

会执行,在return之后,方法只会采取finally的结果

示例 28 : 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

不对,对象值相同,哈希code一定会一样

示例 29 : 垃圾回收的优点和原理。并考虑2种回收机制。

示例 30 : 你所知道的集合类都有哪些?主要方法?

LinkedList,ArrayList,hashMap,HashSet

示例 31 : char型变量中能不能存贮一个中文汉字?为什么?

可以,char字节大小是2

示例 32 : 解析XML文档有哪几种方式?

SAX和DOM

示例 33 : 关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

throws定义方法上,有可能抛出异常
throw 抛出指定异常
catch   捕捉异常
finally 是否抛出异常,一定会执行

示例 34 : 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?


示例 35 : java中有几种类型的流?

字节流、字符流、对象流、缓存流 等

示例 36 : java中会存在内存泄漏吗,请简单描述。

会发生内存泄漏,虽然有内存回收机制,对象没有被直接引用,但又非直接引用,那么不满足垃圾回收机制,导致泄漏

示例 37 : java中实现多态的机制是什么?

重写,父类引用子类对象

示例 38 : 静态变量和实例变量的区别?

实例变量是通过实例化形式,静态变量是通过类直接可以访问

示例 39 : 什么是java序列化,如何实现java序列化?

java对象存储硬盘过程叫做序列化,将该类实现接口 Serializable

示例 40 : 是否可以从一个static方法内部发出对非static方法的调用?

示例 41 : 在JAVA中,如何跳出当前的多重嵌套循环?

外部循环前面定义一个标签,再在循环里面break外部那个标签

示例 42 : List、Map、Set三个接口,存取元素时,各有什么特点?

List有序,可以重复
map键值对形式存放数据
set无序,不可重复

示例 43 : Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以 implements(实现)interface(接口)?

示例 44 : 内部类可以引用外部类的成员吗?有没有什么限制?

可以使用,非静态成员都可以使用

示例 45 : 多线程有几种实现方法,都是什么?

1、继承一个Thread类2、实现Runnable接口3、匿名内部类,lamda表达式

示例 46 : sleep() 和 wait() 有什么区别?

1、sleep是休眠,暂停意思,wait是退出,释放对象,其他线程继续访问对象

示例 47 : 说出数据连接池的工作机制是什么?

创建销毁线程开销非常大
解决办法:创建n条connection连接循环使用,不进行关闭,从而节省创建开销

示例 48 : 简述synchronized和java.util.concurrent.locks.Lock的异同 ?

1、syn是关键字,lock是一个接口,代码实现的
2、syn可能会导致死锁,会一直等待,导致阻塞,lock是手动锁,需要手动释放,不然也会死锁

示例 49 : Class.forName的作用?为什么要用?

示例 50 : 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法

加锁有等级的,当对象加锁了,看里面方法有锁没,有锁那将要被等待,没锁就可以进入其他方法

示例 51 : 给我五个你最常见到的runtime exception。