Java 常考面试题及答案(吐血总结)持续更新...

赢在面试之Java基础篇(一)

1、解释Java面向对象的特征: 抽象、封装、继承、多态。

2、面向对象的好处是什么?

3、Java常用的关键字、修饰符的使用

4、Java中的参数传递(值传递、引用传递)

5、简述内部类、静态内部类、匿名内部类的区别

6、try catch finally的使用

7、String 是最基本的数据类型吗?

8、float f=3.4;是否正确?

9、解释内存中的栈(stack)、堆(heap)和静态存储区的用法。

10、简述while语句和do-while语句的特点与区别

11、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

12、数组有没有length()方法?String 有没有length()方法?

13、在Java 中,如何跳出当前的多重嵌套循环?

14、构造器(constructor)是否可被重写(override)?

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

16、是否可以继承String 类?

17、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

18、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰?

19、静态变量和实例变量的区别?

20、是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?

21、如何实现对象克隆?

22、Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?

23、Java 中的final关键字有哪些用法?

24、数据类型之间的转换:

25、如何实现字符串的反转及替换?

26、怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?

27、日期和时间:

28、打印昨天的当前时刻。

29、比较一下Java 和JavaSciprt。

30、什么时候用assert?

31、Error 和Exception 有什么区别?

32、详解a++和++a的区别

33、a+=b 和a=a+b的区别

34.,Java中的泛型是什么 ? 使用泛型的好处是什么?

35,Java的泛型是如何工作的 ? 什么是类型擦除 ?如何工作?

36,你可以把List传递给一个接受List参数的方法吗?

37,如何阻止Java中的类型未检查的警告?

38,Java中List和原始类型List之间的区别?

39,编写一段泛型程序来实现LRU缓存?

40,Array中可以用泛型吗?

41,如何编写一个泛型方法,让它能接受泛型参数并返回泛型类型?

42,C++模板和java泛型之间有何不同?


赢在面试之Java基础篇(二)

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

2、Java有没有goto?

3、说说&和&&的区别。

4、在JAVA中如何跳出当前的多重嵌套循环?

5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

6、short s1= 1; s1 = (s1+1是int类型,而等号左边的是short类型,所以需要强转)1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?(没有错)

7、char型变量中能不能存贮一个中文汉字?为什么?

8、用最有效率的方法算出2乘以8等於几?

9、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

10,静态变量和实例变量的区别?

11、是否可以从一个static方法内部发出对非static方法的调用?

12、Integer与int的区别

13、Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

14、Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

15、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

16、Java中实现多态的机制是什么?

17、abstractclass和interface语法上有什么区别?

18、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

19、内部类可以引用它的包含类的成员吗?有没有什么限制?

20、String s = “Hello”;s = s + “world!”;这两行代码执行后,原始的String对象中的内容到底变了没有?

21、String s = new String(“xyz”);创建了几个StringObject?是否可以继承String类?

22、String、Stringbufer、StringBuilder区别

23、下面这条语句一共创建了多少个对象:String s=“a”+“b”+“c”+“d”;

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

25、final, finally, finalize的区别。

26、运行时异常与一般异常有何异同?

27、error和exception有什么区别?

28、简单说说Java中的异常处理机制的简单原理和应用。

29、Java 中堆和栈有什么区别?

30、能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象?

31、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?

32、字节流与字符流的区别

33、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

34、描述一下JVM加载class文件的原理机制?

35、heap和stack有什么区别。

36、GC是什么?为什么要有GC?

37、垃圾回收的优点和原理。并考虑2种回收机制。

38、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

39、Java 中,throw 和 throws 有什么区别

40,java中会存在内存泄漏吗,请简单描述。


赢在面试之Java集合框架篇

1、ArrayList和Vector的区别

2、HashMap和Hashtable的区别

3、List和 Map区别?

4、List,Set, Map是否继承自Collection接口?

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

6、说出ArrayList,Vector,LinkedList的存储性能和特性

7、去掉一个Vector集合中重复的元素

8、Collection和Collections的区别。

9、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

10、你所知道的集合类都有哪些?主要方法?

11、Java集合框架是什么?说出一些集合框架的长处?

12、集合框架中的泛型有什么长处?

13、Java集合框架的基础接口有哪些?

14、为何Collection不从Cloneable和Serializable接口继承?

15、为何Map接口不继承Collection接口?

16、Iterator是什么?

17、Enumeration和Iterator接口的差别?

18、为何没有像Iterator.add()这种方法。向集合中加入元素?

19、为何迭代器没有一个方法能够直接获取下一个元素。而不须要移动游标?

20、Iterater和ListIterator之间有什么差别?

21、遍历一个List有哪些不同的方式?

22、通过迭代器fail-fast属性,你明确了什么?

23、fail-fast与fail-safe有什么差别?

24、在迭代一个集合的时候,怎样避免ConcurrentModificationException?

25、为何Iterator接口没有详细的实现?

26、UnsupportedOperationException是什么?

27、在Java中,HashMap是怎样工作的?

28、hashCode()和equals()方法有何重要性?

29、我们能否使用不论什么类作为Map的key?

30、Map接口提供了哪些不同的集合视图?

31、HashMap和HashTable有何不同?

32、怎样决定选用HashMap还是TreeMap?

33、ArrayList和Vector有何异同点?

34、Array和ArrayList有何差别?什么时候更适合用Array?

35、ArrayList和LinkedList有何差别?

36、哪些集合类提供对元素的随机訪问?

37、EnumSet是什么?

38、哪些集合类是线程安全的?

39、并发集合类是什么?

40、BlockingQueue是什么?

41、队列和栈是什么,列出它们的差别?

42、Collections类是什么?

43、Comparable和Comparator接口是什么?

44、Comparable和Comparator接口有何差别?

45、我们怎样对一组对象进行排序?

46、当一个集合被作为參数传递给一个函数时,怎样才干够确保函数不能改动它?

47、我们怎样从给定集合那里创建一个synchronized的集合?

48、集合框架里实现的通用算法有哪些?

49、大写的O是什么?举几个样例?

50、与Java集合框架相关的有哪些最好的实践?


赢在面试之Java多线程篇(一)

1,什么是线程?

2,线程和进程有什么区别?

3,如何在Java中实现线程?

4,Java 关键字volatile 与 synchronized 作用与区别?

5,有哪些不同的线程生命周期?

6,你对线程优先级的理解是什么?

7,什么是死锁(Deadlock)?如何分析和避免死锁?

8,什么是线程安全?Vector是一个线程安全类吗?

9,Java中如何停止一个线程?

10,什么是ThreadLocal?

11,Sleep()、suspend()和wait()之间有什么区别?

12,什么是线程饿死,什么是活锁?

13,什么是Java Timer类?如何创建一个有特定时间间隔的任务?

14,Java中的同步集合与并发集合有什么区别?

15,同步方法和同步块,哪个是更好的选择?

16,什么是线程池? 为什么要使用它?

17,Java中invokeAndWait 和 invokeLater有什么区别?

18,多线程中的忙循环是什么?


赢在面试之Java多线程篇(二)

1, 什么是线程?

2,线程和进程有什么区别?

3, 如何在Java中实现线程?

4,用Runnable还是Thread?

5,Thread 类中的start() 和 run() 方法有什么区别?

6,Java中Runnable和Callable有什么不同?

7,Java中CyclicBarrier 和 CountDownLatch有什么不同?

8, Java内存模型是什么?

9, Java中的volatile 变量是什么?

10,什么是线程安全?Vector是一个线程安全类吗?

11,Java中什么是竞态条件? 举个例子说明。

12,Java中如何停止一个线程?

13,一个线程运行时发生异常会怎样?

14, 如何在两个线程间共享数据?

15,Java中notify 和 notifyAll有什么区别?

16,为什么wait, notify 和 notifyAll这些方法不在thread类里面?

17,什么是ThreadLocal变量?

18, 什么是FutureTask?

19,Java中interrupted 和 isInterruptedd方法的区别?

20, 为什么wait和notify方法要在同步块中调用?

21,为什么你应该在循环中检查等待条件?

22,Java中的同步集合与并发集合有什么区别?

23, Java中堆和栈有什么不同?

24,什么是线程池? 为什么要使用它?

25,如何写代码来解决生产者消费者问题?

26, 如何避免死锁?

27,Java中活锁和死锁有什么区别?

28,怎么检测一个线程是否拥有锁?

29,你如何在Java中获取线程堆栈?

30, JVM中哪个参数是用来控制线程的栈堆栈小的

31, Java中synchronized 和 ReentrantLock 有什么不同?

32,有三个线程T1,T2,T3,怎么确保它们按顺序执行?

33,Thread类中的yield方法有什么作用?

34, Java中ConcurrentHashMap的并发度是什么?

35, Java中Semaphore是什么?

36,如果你提交任务时,线程池队列已满。会时发会生什么?

37,Java线程池中submit() 和 execute()方法有什么区别?

38,什么是阻塞式方法?

39, Swing是线程安全的吗? 为什么?

40, Java中invokeAndWait 和 invokeLater有什么区别?

41,Swing API中那些方法是线程安全的?

42, 如何在Java中创建Immutable对象?

43,Java中的ReadWriteLock是什么?

44,多线程中的忙循环是什么?

45,volatile 变量和 atomic 变量有什么不同?

46,如果同步块内的线程抛出异常会发生什么?

47, 单例模式的双检锁是什么?

48,如何在Java中创建线程安全的Singleton?

49,写出3条你遵循的多线程最佳实践

50,如何强制启动一个线程?

51,Java中的fork join框架是什么?

52, Java多线程中调用wait() 和 sleep()方法有什么不同?


赢在面试之JavaWeb篇

1、说一说Servlet的生命周期?

2、Servlet API中forward()与redirect()的区别?

3、request.getAttribute()和 request.getParameter()有何区别?

4,jsp静态包含和动态包含的区别

5,MVC的各个部分都有那些技术来实现?如何实现?

6,jsp有哪些内置对象?作用分别是什么?

7,Http中,get和post方法的区别

8,什么是cookie?Session和cookie有什么区别?

9,jsp和servlet的区别、共同点、各自应用的范围?

10,tomcat容器是如何创建servlet类实例?用到了什么原理?

11,AJAX有哪些有点和缺点?

12,AJAX应用和传统Web应用有什么不同?

13,Ajax的实现流程是怎样的?

14,简单说一下数据库的三范式?

15,Java集合框架是什么?说出一些集合框架的优点?

16,Java集合框架的基础接口有哪些?

17,集合框架中的泛型有什么优点?

18,Enumeration和Iterator接口的区别?

19,Iterater和ListIterator之间有什么区别?

20,我们如何对一组对象进行排序?

21,与Java集合框架相关的有哪些最好的实践?

22,什么是事务?

23,说说你开发中遇到过什么难题啊?怎么解决的?


赢在面试之Java框架篇

1,谈谈你对Struts的理解。

2、谈谈你对Hibernate的理解。

3,谈谈你对Spring的理解。

4,谈谈Struts的优缺点

5,iBatis与Hibernate有什么不同?

6,在hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决?

7,介绍一下Hibernate的二级缓存

8,JDO是什么?

9,Hibernate的一对多和多对一双向关联的区别??

10,Hibernate是如何延迟加载?

11,使用Spring框架的好处是什么?

12,ApplicationContext通常的实现是什么?

13,什么是Spring的依赖注入?有哪些方法进行依赖注入

14,什么是Spring beans?

15,解释Spring支持的几种bean的作用域。

16,解释Spring框架中bean的生命周期。

17,在 Spring中如何注入一个java集合?

18,解释不同方式的自动装配 。

19,Spring框架的事务管理有哪些优点?

20.什么是基于Java的Spring注解配置? 给一些注解的例子?

21,什么是ORM?

22,Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?

23,Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分别是做什么的?有什么区别?

24,阐述Session加载实体对象的过程。

25,MyBatis中使用#和$书写占位符有什么区别?

26,解释一下MyBatis中命名空间(namespace)的作用。

27、MyBatis中的动态SQL是什么意思?

28,JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?

29,MyBatis与Hibernate有哪些不同?

30,简单的说一下MyBatis的一级缓存和二级缓存?


赢在面试之Java数据库篇

1,JDBC访问数据库的基本步骤是什么?

2,说说preparedStatement和Statement的区别

3,说说事务的概念,在JDBC编程中处理事务的步骤。

4,数据库连接池的原理。为什么要使用连接池。

5,JDBC的脏读是什么?哪种数据库隔离级别能防止脏读?

6,什么是幻读,哪种隔离级别可以防止幻读?

7,JDBC的DriverManager是用来做什么的?

8,execute,executeQuery,executeUpdate的区别是什么?

9,SQL查询出来的结果分页展示一般怎么做?

10,JDBC的ResultSet是什么?

11,查询课程1的成绩比课程2的成绩高的所有学生的学号

12,查询平均成绩大于60分的同学的学号和平均成绩

13,查询所有同学的学号、姓名、选课数、总成绩

14,查询姓“张”的老师的个数

15,查询没学过“张三”老师课的同学的学号、姓名

16,查询同时学过课程1和课程2的同学的学号、姓名

17,查询学过“李四”老师所教所有课程的所有同学的学号、姓名

18,查询课程编号1的成绩比课程编号2的成绩高的所有同学的学号、姓名

19,查询所有课程成绩小于60分的同学的学号、姓名

20,查询至少有一门课程与学号为1的同学所学课程相同的同学的学号和姓名

21、把“sc”表中“王五”所教课的成绩都更改为此课程的平均成绩

22、查询和编号为2的同学学习的课程完全相同的其他同学学号和姓名

23、删除学习“王五”老师课的sc表记录

24、向sc表中插入一些记录,这些记录要求符合以下条件:
将没有课程3成绩同学的该成绩补齐, 其成绩取所有学生的课程2的平均成绩

25、按平平均分从高到低显示所有学生的如下统计报表:
– 学号,企业管理,马克思,UML,数据库,物理,课程数,平均分

26、查询各科成绩最高分和最低分:以如下形式显示:课程号,最高分,最低分

27、按各科平均成绩从低到高和及格率的百分数从高到低顺序

28、查询如下课程平均成绩和及格率的百分数(用"1行"显示):
企业管理(001),马克思(002),UML (003),数据库(004)

29、查询不同老师所教不同课程平均分, 从高到低显示

30、查询如下课程成绩均在第3名到第6名之间的学生的成绩:
– [学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩


赢在面试之计算机网络篇

1、Http和Https的区别

2、对称加密与非对称加密

3、三次握手与四次挥手

4、为什么TCP链接需要三次握手,两次不可以么,为什么?

5、TCP协议如何来保证传输的可靠性

6、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?

7、Get与POST的区别

8、TCP与UDP的区别

9、TCP的拥塞处理

10、从输入网址到获得页面的过程

11、Session、Cookie 与 Application

12、SQL 注入

13、 XSS 攻击

14、OSI网络体系结构与TCP/IP协议模型

15、TCP和UDP分别对应的常见应用层协议

16、网络层的ARP协议工作原理

17、IP地址的分类

18、IP地址与物理地址

19、 常见状态码及原因短语


赢在面试之Java数据结构篇


赢在面试之Java算法篇


你可能感兴趣的:(Java,工作之路)