金三银四跳槽季-Java中级程序员必备面试题

1、如何创建一个有序集合

2、用jdbc写一段有事务的代码

3、简述servlet,jsp,Struts2,springMVC是否是线程安全的,为什么

5、如何避免浏览器缓存

6、radis,ehcache两种缓存有什么区别。radis如何存放一个java对象

7、如何写sql能够有效的使用到复合索引

8、在myBatis的xml配置文件中,怎样使用sql中的in条件

9、在linux中,修改一个文件的所属账户为weblogic并设置为只读。打出命令。

10、如何在一台电脑上使用http://www.baidu.com域名地址访问本地eclipse启动的应用

11、query有哪些选择器,用jquery如何获取一个checkbox的是否被选中的值/

12、请按照你理解的方式,编码实现(允许伪码),如下功能:

List keyList = Maps.toList(aMap).byKey();

List valueList = Maps.toList(aMap).byValue();

如果你来设计上述你所理解到的功能的API,你会如何设计(只需如上,给到API调用代码即可,实现可以忽略)?

深挖上面的问题,如果要求在获取对应List的过程中,需要做到:

a. 如果遇到null,则去除或者替换成其他默认字符

b. 需要在新生成的字符串中,添加前缀(假设这是一个Map<string>)/<string>

c. 在保持代码优雅、可读、极佳复用和扩展体验的情况下,你觉得还可以加入什么样的功能?

13、由HashMap,你可以联想到什么?

14、NULL是一个比较让人困扰的设计,你是否同意呢? 如果需要在应用中规避NULL带来的不足之处,请你列举可能的应对方案。

15、如何在父类中为子类自动完成所有的hashcode和equals的实现?这么做有何优劣?

16、请结合OO设计理念,谈谈访问修饰符public、private、protected、default在应用设计中的作用?

17、请举出JDK中,你最有感情和心得的几个类,如果要把它们全部都使用起来,请结合用户下单的逻辑,告知一个方案,能把这些类全部用上?

18、请用批判的角度(越疯狂越好),抨击一下JDK中collection体系和IO体系的设计。

19、有一个方法 getLimitResource(resKey/*resource key*/), 在并发调用的情况下,如何控制并发量,(进一步)如何控制秒级并发?

20、请思考一个方案,设计一个可以控制缓存总体大小的自动适应的本地缓存

21、JDK中的ThreadPool的设计有何优劣,如果要改造它以求达到最大吞吐量,请问有何方案?

22、请思考一个方案,实现分布式环境下的countDownLatch?

23、举例一种JDK内部实现CAS的方式

24、列举你可以搜索到的,并且喜欢的并发框架(请上网)。

25、怎么实现缓存过期?

26、你最喜欢的设计模式有哪些?他们为你解决了什么问题?你觉得你的性格和哪个设计模式比较像?

27、如果要你来设计一个设计模式,你会为她取什么名字?

28、你读过哪些设计模式的书,谈谈对这些作者的印象?

29、在装饰器模式和代理模式之间,你如何抉择,请结合自身实际情况聊聊

30、请列举几个反模式,并列举可能的应用场景,并通过调整以求“拨正”

31、代码重构的步骤和原因,如果理解重构到模式?

32、如果要改造Spring,你最有兴趣的是哪些方面?你觉得spring是一个分布式框架吗?如果不是,你觉得还差哪些东西?

33、请结合自身情况,聊聊分布式三态?

34、重复和重发的应对方案有哪些?

35、分布式环境下的控制并发手法?

36、从12306系统入手,分析一下这个系统的分布式特点、挑战和你的解决方案

37、如何评价一个消息系统,有哪些考核指标?

38、关于平台组件化和业务组件化,你有什么想法?

39、列举分布式高性能的常用框架,并结合营销、订单聊聊你的项目经验?(适用于有电商经验的候选人)

40、深拷贝和浅拷贝区别,深拷贝的几种实现方法。

41、equals和==的区别?

42、mysql中in 和exists 区别

43、写出三种单例模式实现

44、Java多线程协作,countdowlatch和cyclicbarrier的用法,以及相互之间的差别?

45、JVM的组成,作用

46、g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择

47、数组和链表数据结构描述,各自的时间复杂度

48、描述克隆表达式和正则表达式

49、DispatcherServlet初始化过程

50、ConcurrentHashMap的内部结构是什么

51、如果两个数相加超过long的最大值,怎么求平均值

52、方法区(永久代)可以进行垃圾回收吗

53、redis哪些命令是线程安全的,哪些非安全

54、ByteArrayInputStream内部维护的是一个byte[],能想象这个api读取一个比较大的文件时会出现什么问题吗

55、介绍下你理解的线程切换过程,名词不准确没关系

56、集群环境中,如果大量请求同时运行到以下方法,有没有线程安全问题,为什么

public String getXXStr(){

return new StringBuilder().append("abc")

.append(123).append("zkl")

.append("edf").toString();

}


57、有哪些方法可以实现分布式锁,至少挑一种详细介绍下

58、java八种基础类型+一种引用类型,他们的赋值操作中,有哪些是线程安全绝不会划分到两个时间片中的

59、关注过哪些jvm参数(说明意义就行,不需要单词拼对)

60、请列出5个设计模式

61、请列出5个运行时异常

62、int i=0; for(String item:ItemArray){i++;continue;} system.out.println(i); 请写出输出值

63、int i=0; system.out.print(i++); 请写出输出值

64、请描述 Session/Cookies/Request Attribute的作用范围

65、请列举web.xml的配置元素, 并写出对应的描述

66、请画出Spring MVC中的 ServletDispatch, Controller, Filter 的执行顺序

67、http请求返回的状态码:200, 302, 404分别代表什么意思

68、请描述一下什么是悲观锁,什么是乐观锁

69、请描述分布式事务和数据库事务有什么异同

70、-server -Xms512m -Xmx512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m 是java启动参数, 请描述上述参数的意思

71、请列出你所了解的性能测试工具

72、请写一行断言,断言返回值 result 不为空

73、请列出你所了解的Mock框架

74、用一行命令查看文件的最后五行

75、用一行命令输出正在运行的java进程

76、使用maven命令打包应用程序, 并忽略测试用例

77、使用maven命令将maven工程转化为eclipse工程

78、error和exception的区别,RuntimeException和非RuntimeException的区别

79、使用synchronized修饰静态方法和非静态方法有什么区别?

80、java nio的几个核心api

81、什么是ThreadLocal类,怎么使用它?

82、画出线程的生命周期的状态转换。sleep()、yield() 有什么作用

83、cms回收机制分那几个过程,有几次堵塞

84、写出不少于3种nosql数据库,并简单描述

85、MySQL中varchar与char的区别以及varchar(30)中的30代表的涵义

86、从哪些角度进行数据库优化

87、后台系统怎么防止请求重复提交?

88、Spring AOP的原理?

89、列举几个用到过的jvm优化参数?参数:-XX:+PrintFlagsFinal中加号表示什么意思?

90、代码:System.out.println(1 / 0D); 输出什么?为什么?

91、写代码自己封装实现jquery中ajax函数(入参,回调,支持跨域);

92、如何通过mysql日志分析出慢sql,并提供几种慢sql解决方案?

93、java.util.concurrent包中使用过哪些类?分别说说使用在什么场景?为什么要使用?

94、如何使用redis和zookeeper实现分布式锁?有什么区别(优缺点)?分别适用什么场景?

95、针对应用程序出现“OutOfMemoryError: Java heap space”的情况,下面说法正确的有哪些

A. 检查程序,看是否有死循环或不必要地重复创建大量对象。

B. jvm配置参数不变的情况下,加大物理内存。

C. 发生这种问题的原意是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够。可通过调大 -XX:PermSize -XX:MaxPermSize 来避免。

D. 调大jvm的参数 -Xms -Xmx,可以一定程度上避免出现上述异常。

E. 调小jvm参数-Xss,可以一定程度上避免出现上述异常。

96、简述tcp建立连接3次握手,和断开连接4次握手的过程;关闭连接时,出现TIMEWAIT过多是由什么原因引起,是出现在主动断开方还是被动断开方。

97、列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题。

Class A{

private Map<string> cache;/<string>

public Map<string> initAndGetCache() {/<string>

// TODO: 初始化代码

}

}

98、多线程高并发的情况下,采用doubleCheck方式实现方法initAndGetCache();

99、maven打的web工程中,同一个类出现在相同的jar包中,多台机器实际使用的类不一样,如何定位和解决这类问题。

100、描述HashMap与ConcurrentHashMap的区别。

101、简述一种RPC(dubbo优先)的启动和调用流程。

102、jvm对java堆内存如何分区,简述GC原理,一个堆内对象在产生和被GC掉,会经历过哪几代。

103、后端服务器(4核CPU)出现load很高(到40),登陆在linux服务器上后,如何定位和排查原因,并提出解决方案。

104、如何看待缓存的使用(本地缓存,集中式缓存),简述本地缓存和集中式缓存和优缺点。本地缓存在并发使用时的注意事项。

105、描述动态代理的两种实现方式,分别说出相应的优缺点。

106、什么是B+树,B-树,列出实际的使用场景。

107、请你写出数据库悲观锁和乐观锁你所了解的内容并且举例说明使用场景

108、关键字final、static、public、volatile分别可以用来修饰什么(类、方法、属性)?会产生怎样的效果?

109、在自己的代码中,如果创建一个java.lang.String对象,这个对象是否可以被类加载器加载?为什么?

110、说一说你对环境变量classpath的理解?如果一个类不在classpath下,为什么会抛出ClassNotFoundException异常,如果在不改变这个类路径的前期下,怎样才能正确加载这个类?

111、结合你所用到过的开源框架,说一说你对反射的理解。反射可以在哪些场景下发挥作用?

112、说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需要重新实现这两个方法?

113、在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题?

114、一台全新的电脑,除了操作系统(windows)外,电脑上只有jdk安装程序和windows自带的记事本,写出你编写并运行hellow world程序的步骤。

115、说一说你所理解的jsp、servlet、request、response、filter、session、appliation。request.forward和request.redirect有什么区别?

116、你阅读过哪些开源框架的源代码?并且从中学到了什么?有没有参与过开源项目?

117、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

118、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法

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

120、请简单描述,java中存在内存泄漏的情况

121、泛型你使用的多么?说说这两个有什么区别。List super T>、Set extends T>。

122、用java实现二分查找

123、写一个产生者、消费者多线程的demo

124、请描述一下,当发现线上的程序占用的内存越来越大时,如何来分析,解决此类问题?

125、SQLEXPLAIN语法及用途

126、实际开发中优化哪些SQL举例说明

127、a.hashcode() 有什么用,与a.equals(b)有什么关系

128、volatile 修饰的变量一定线程安全吗

129、有没有可能2个不相等的对象有相同的hashcode

130、final,finalize和finally的不同之处

131、String与StringBuffer区别

132、HashTable与HashMap有什么不同之处,请说明Hashmap的内部原理

133、Java中的HashSet内部是如何工作的

134、简述NIO的最佳实践,比如netty,mina

135、简述Http请求get和post的区别以及数据包格式

136、TCP是如何建立连接和断开连接的

137、简述Synchronized的用法

138、列举java多线程包以及常用类名称

139、简述Classloader加载机制

140、简述ConcurrentLinkedQueue和LinkedBlockingQueue的用处和不同之处

141、导致线程死锁的原因?怎么解除线程死锁

142、如何理解悲观锁和乐观锁,悲观锁会导致什么结果,悲观锁和乐观锁怎么正确使用

143、简述Java垃圾回收机制

144、数据库表索引机制,表索引和数据库索引的区别

145、Mysql数据库事务隔离机制有哪些


以上面试题来源网络;


分享到:


相關文章: