百度Java面试题--摘录+总结

96
听雨眠醉蝉声
2017.11.30 17:00 字数 10058

基本概念

1.操作系统中heap和stack的区别。

2.什么是对象/关系映射集成模块?

3.什么是Java的反射机制?

4.什么是ACID?

5.B/S和C/S的联系与区别?

6.cookie和session的区别?

7.interface与抽象类的区别.

8.IOC的优点是什么?

9.IO和NIO的区别,NIO的优点.

10.Java8/Java/7为我们提供了什么新功能?

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

12.JRE,JDK,JVM,JIT之间有什么不同?

13.MVC的各个部分都有哪些技术来实现?如何实现?

14.RPC通信与RMI的区别。

15.什么是web service?

16.JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI、WSDL的解释。

17.web容器主要有哪些功能?并请列出一些常见的web容器的名字。

18.一个“.java”源文件中是否可以包含多个类?有什么限制?

19.简单说说你了解的类加载器。是否实现过类似的类加载器?

20.解释一下什么叫AOP?

21.请简述一下servlet的生命周期及相关的方法。

22.请简述一下ajax的原理及实现步骤。

23.简单描述Struts的主要功能。

24.什么是N层架构?

25.什么是CORBA?用途是什么?

26.什么是Java虚拟机?为什么Java被称为“平台无关的编程语言”?

27.什么是正则表达式?用途是什么?哪个包使用正则表达式来实现模式匹配?

28.什么是懒加载?

29.什么是尾递归,为什么需要尾递归?

30.什么是控制反转与依赖注入?


关键字

finalize

31.什么是finalize()方法?

32.finalize()方法什么时候被调用?

33.析构函数的目的是什么?

34.final和finalize的区别是什么?


final

35.final关键字有哪些用法?

36.final与static关键字可以用于哪里?它们的作用是什么?

37.final,finalize,finally的区别。

38.能否在运行时向static final类型的赋值?

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

40.一个类被声明为final类型,表示了什么意思?

41.throws,throw,try,catch,finally分别代表了什么意思?

42.Java有几种修饰符,分别用来修饰什么?


volatile

43.volatile修饰符有过什么实践?

44.volatile变量时什么?volatile变量和atomic变量有什么不同?

45.volatile类型变量提供什么保证?能使得一个非原子操作编程原子操作吗?

46.能创建volatile数组吗?

47.transient变量有什么特点?

48.super什么时候使用?

49.public static void 写成 static public void 会怎么样?

50.说明一下public static void main(String args[])这段声明里每个关键字的作用。

51.请说出作用域public ,private,protected,以及不写时的区别?

52.sizeof是Java的关键字吗?


static

53.static class与non static class的区别。

54.static关键字是什么意思?Java中是否可以覆盖一个private或者是static的方法?

55.静态类型有什么特点

56.main()方法为什么必须是静态的?能不能声明main()方法为非静态?

57.是否可以从一个静态方法内部发出对非静态方法的调用?

58.静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?

59.成员方法是否可以访问静态变量?为什么静态方法不能访问成员变量?


switch

60.switch语句中的表达式可以是什么类型数据?

61.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

62.while循环和do循环有什么不同?


操作符

63.&操作符和&&操作符的区别?

64.a=a+b和a+=b的区别?

65.逻辑操作符与条件操作符的区别。

66.3*0.1 == 0.3将会返回什么?

67.float f=3.4;是否正确?

68.short s1=1;s1=s1+1;有什么关联?


数据结构

69.基础类型.

70.基础类型与封装类型的区别在哪里?

71.简述九种基本数据类型的大小,以及他们的封装类。

72.int和integer哪个会占用更多的内存?int和integer的区别?parseInt()函数再什么时候使用?

73.float和double的默认值是多少?

74.如何去小数四舍五入保留小数点后两位?

75.char型变量中能不能存储一个中文汉字,为什么?


类型转换

76.怎样将bytes转换为long类型?

77.怎么将byte转换为String?

78.如何将数值型字符转换为数字?

79.我们能讲int 强转成byte类型的变量吗?如果该值大于byte类型的范围,将会出现什么现象?

80.能在不进行强转的情况下讲一个double值赋值给long类型的变量吗?

81.类型向下转换是什么?


数组

82.如何权衡是使用无序的数组还是有序的数组?

83.怎么判断数组是为null还是空?

84.怎么打印数组?怎么打印数组中的重复元素?

85.Array和ArrayList有什么区别?什么时候该使用Array而不是ArrayList?

86.数组和链表数据结构描述,各自的时间复杂度。

87.数组有没有length()这个方法?String有没有length()这个方法?


队列

88.队列和栈的定义,列出它们的区别.?

89.BlockingQueue是什么?

90.简述ConcurrentLinkedQueu,LinkedBlockingQueue的用处和不同之处。

91.ArrayList,Vector,LinkedList的存储性能和特性。


String

92.StringBuffer。

93.ByteBuffer与StringBuffer有什么区别?

94.HashMap。

95.HashMap的工作原理是什么?内部的数据结构是什么?

96.HashMap的table的容量如何确定?loadFactor是什么?该变量如何变化?这种变化会带来什么问题?

97.HashMap实现的数据结构是什么?如何实现?

98.HashMap,HashTable,ConcurrentHashMap的区别。

99.HashMap的遍历方式及效率。

100.HashMap,LinkedMap,TreeMap的区别。

101.如何决定选用HashMap还是TreeMap?

102.如果HashMap的大小超过了负载因子定义的容量,怎么办?

103.HashMap是线程安全的吗?并发下使用的Map是什么,我们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。


HashSet

104.HashSet和TreeSet有什么区别?

105.HashSet内部是如何工作的?

106.WeakHashMap是怎么工作的?


Set

107.Set里元素是不能重复的,那么用什么方法来区分重复与否?是用==还是equals()

它们有什么区别?

108.TreeMap是采用什么树来实现的?TreeMap,HashMap,LingkedHashMap的区别。

TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素。

109.一个已经构建好的TreeSet怎么完成倒排序?

110.EnumSet是什么?


Hash算法

111.HashCode的作用。

112.简述一致性Hash算法。

113.有没有可能两个不相等的对象有相同的hashcode?当两个对象hashcode相同怎么办?如何获取值对象?

114.为什么在重写euqals方法的时候需要重写hashcode方法?equals与hashcode的异同点在哪里?

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

116.hashCode()和equals()方法的重要性体现在什么地方?

117.obj有哪些公用方法?obj类hashcode,equals设计原则?sun为什么这么设计?obj类的概述。

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

119.可以在hashcode()中使用随机数字吗?

120.LingkedHashMap。

121.LingkedHashMap和PriorityQueue的区别是什么?


List

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

123.List,Set,Map三个接口是否继承自Collection接口?

124.遍历一个list有哪些不同的方式?


LinkedList

125.LinkedList是单项链表还是双向链表?

126.LinkedList与ArrayList有什么区别?

127.描述一下Java中集合(Collection),接口(Interface),实现(Implementations)的概念。

128.插入数据时,ArrayList,LinkedList,Vector谁速度较快?


ArrayList

129.ArrayList和HashMap的默认大小是多少?

130.ArrayList,LinkedList的区别,什么时候用ArrayList?

131.ArrayList和Set的区别。

132.ArrayList,LinkedList,Vector的区别。

133.ArrayList是如何实现的?

134.ArrayList如何实现扩容?

135.Array和ArrayList有什么区别?什么时候更适合用Array?

136.说出ArrayList,LinkedList,Vector的存储性能和特性。


Map

137.Map,Set,List,Queue,Stack。

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

139.为什么map接口不继承Collection接口?


Collections

140.介绍Java中的Collection FrameWork。集合类框架的基本接口有哪些?

141.Collections类是什么?Collection和Collections的区别?Collection、Map的实现。

142.集合类框架的最佳实践有哪些?

143.为什么Collection不从Cloneable和Serialize接口继承?

144.说出几点Java中使用Collection的最佳实践。

145.Collections中遗留类(HashTable,Vector)和现有类的区别。

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


接口

147.Comparator与Comparable接口是干什么的?列出他们的区别。


对象

148.拷贝(clone)。

149.如何实现对象克隆?

150.深拷贝和浅拷贝的区别?

151.深拷贝和浅拷贝如何实现激活机制?

152.写clone()方法时,通常都有一行代码,是什么?


比较

153.在比较对象时,“==”运算符和equals运算有何区别?

154.如果要重写一个对象的equals方法,还要考虑什么?

155.两个对象值相同(x.equals(y)==true),但却可以有不同的hashcode,这句话对不对?


构造器

156.构造器链是什么?

157.创建对象时构造器的调用顺序。

158.不可变对象。

159.什么是不可变对象?

160.为什么Java中的String是不可变的?

161.如何构建不可变的的类结构?关键点在哪里?

162.能创建一个包含可变对象的不可变对象吗?

163.如何对一组对象进行排序?


方法

164.构造器(constructor)是否可以被重写?

165.方法可以同时既是static又是synchronized的吗?

166.abstract的method是否可以同时既是static,是否可以同时是native,是否可以同时是synchronized?

167.Java中支持哪种参数传递类型?

168.一个对象被当做参数传递到一个方法,是值传递还是引用传递?

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

170.我们能否重载main()方法?

171.如果main方法被声明为private会怎么样?


GC概念

172.GC是什么?为什么有GC?

173.什么时候会导致垃圾回收?

174.GC是怎么样运行的?

175.新老以及永久区是什么?

176.GC有几种方式?怎么配置?

177.什么时候一个对象会被GC?如何判断一个对象是否存活?

178.System.gc() Runtime.gc()会做什么事情?能保证GC执行吗?

179.垃圾回收器可以马上回收内存吗?有什么办法可以主动通知虚拟机进行垃圾回收?

180.Minor GC,Major GC,Young GC,Full GC分别发生在什么时候?

181.垃圾回收算法的实现原理。

182.如果对象的引用被置为null,垃圾收集器是否会立即对释放对象占用内存?

183.垃圾回收的最佳做法是什么?

184.GC收集器有哪些?

185.串行收集器和吞吐量收集器的区别是什么?

186.Serial与Parallel GC之间的不同之处?

187.CMS收集器与G1收集器的特点与区别?

188.CMS垃圾回收器的工作过程。

189.JVM中一次完整的GC流程是怎么样的?对象如何晋升到老年代?

190.吞吐量优先和响应优先的垃圾收集器选择。

191.GC策略。

192.举个实际的场景,选择一个GC策略。

193.JVM的永久代中会发生垃圾回收吗?


收集方法

194.标记清除,标记整理,复制算法的原理与特点?分别用在什么地方?

195.如果让你优化收集方法,有什么思路?


JVM参数

196.说说你知道的几种主要的JVM参数。

197.-XX:+UseCompressedOops有什么作用?

198.类加载器。

199.Java类加载器都有哪些?

200.JVM如何加载字节码文件?


内存管理

201.JVM内存分哪个区,每个区的作用是什么?

202.一个对象从创建到销毁都是怎么在这些部分里存活和转移的。

203.解释内存中的栈、堆和方法区的用法。

204.JVM中哪个参数是用来控制线程的堆栈大小?

205.简述内存分配与内存回收策略。

206.简述重排序,内存屏障,happen-before,主内存,工作内存。

207.Java中存在内存泄露问题么?请举例说明。

208.简述Java中软引用,弱引用和虚引用。

209.内存映射缓存区是什么?

210.jstack,jstat,tmap,jconsole怎么用?

211.32位JVM和64位JVM的最大内存分别是多少?32位和64位的NVM,int类型变量长度是多少?

212.怎样通过Java程序来判断JVM是32位还是64位?

213.JVM自身会维护缓存吗?是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理堆?

214.什么情况下回发生栈内存溢出?

215.双亲委派模型是什么?


多线程

216.什么是线程?

217.多线程的优点。

218.多线程的几种实现方式。

219.用Runnable还是Thread。

220.什么是线程安全?

221.Vector,SimpleDateFormat是线程安全类?

222.什么Java原型不是线程安全的?

223.哪些集合类是线程安全的?

224.多线程的忙循环是什么?

225.如何创建一个线程?

226.编写多线程程序有几种实现方式?

227.什么线程局部变量?

228.线程和进程有什么区别?进程间如何通讯,线程间如何通讯?

229.什么是多线程环境下的伪共享?

230.同步和异步有何异同,在什么情况下分别使用他们?举例说明。


Current

231.ConcurrentHashMap和HashTable的区别。

232.ArrayBlockingQueue,CountDownLatch的用法。

233.ConcurrentHashMap的并发度是什么。

234.CyclicBarrier和CountDownLatch有什么不同?各自的内部原理和用法。

235.Semaphore的用法。


Thread

236.启动一个线程是调用run()还是start()方法?start()和run()方法有什么区别?

237.调用start()方法是会执行run方法,为什么不能直接调用run方法?

238.sleep()方法和对象的wait()方法都可以让线程暂停执行,他们有什么区别?

239.yield方法有什么作用?sleep()方法和yield()方法有什么区别?

240.Java中如何停止一个线程。

241.stop()和suspend()方法为何不推荐使用?

242.如何在两个线程间共享数据?

243.如何强制启动一个线程?

244.如何让正在运行的线程暂停一段时间?

245.什么是线程组,为什么在Java中不推荐使用?

246.你是如何调用wait方法的使用if块还是循环?


生命周期

247.有哪些不同的线程生命周期?

248.线程状态,BLOCKED和WAITING有什么区别?

249.画一个线程的生命周期状态图。

250.ThreadLocal用途是什么,原理是什么,用的时候要注意什么?


ThreadPool

251.线程池是什么?为什么要使用它?

252.如何创建一个Java线程池?

253.ThreadPool用法与优势。

254.提交任务时,线程池队列已满时会发什么?

255.newCache和newFixed有什么区别?简述原理。搞糟函数的各个参数的含义是什么?

256.线程池的实现策略。

257.线程池的关闭方式有几种,各自的区别是什么?

258.线程池中submit()和execute()方法有什么区别?


线程调度

259.Java中用到的线程调度算法是什么?

260.什么是多线程中的上下文切换?

261.你对线程优先级的理解是什么?

262.什么是线程调度器和时间分片?


线程同步

263.请说出你所指的线程同步的方法。

264.synchronized的原理是什么?

265.synchronized和ReentrantLock有什么不同?

266.什么场景下可以使用volatile替换synchronized?

267.有T1,T2,T3三个线程,怎么确保它们按顺序执行?怎么保证T2在T1执行完后执行,T3在T2执行完后执行。

268.同步快内的线程抛出异常会发生什么。

269.当一个线程进入一个对象的synchronized方法A之后,其他线程是否可以进入此对象的synchronized方法B?

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

271.如何从给定集合那里创建一个synchronized的集合?


272.Java Concurrency API中的Lock接口是什么?对比同步它有什么优势?

273.Lock与Synchronized的区别?Lock比synchronized块的优势是什么?

274.ReadWriteLock是什么?

275.什么是乐观锁?如何实现乐观锁?如何避免ABA问题?

276.解释一下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁。

277.什么时候应该使用可重入锁?

278.简述锁的等级方法锁,对象锁,类锁。

279.Java中死锁和活锁的区别?

280.什么是死锁?导致线程死锁的原因?如何确保N个线程可以访问N个资源同时又不会导致死锁?

281.死锁与活锁的区别。死锁与饥饿的区别?

282.怎么检测一个线程是否拥有锁?

283.如何实现分布式锁?

284.读写所可以用于什么应用场景?

285.有哪些无锁数据结构,他们实现的原理是什么?

286.Executors类是什么?Executor和Executors的区别?

287.什么是Java线程转储,如何得到它?

288.如何在Java中获取线程堆栈?

289.说出3条在Java中使用线程的最佳实践。

290.在线程中你怎么处理不可捕捉异常?

291.实际项目中使用多线程举例。你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?

292..请说出与线程同步以及线程调度相关的方法?

293.程序中有3个socket,需要多少个线程来处理?

294.假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有10个线程同时调用它,如何做到?

295.如何在windows和Linux上查找哪个线程使用的CPU时间最长?

296.如何确保main()方法所在的线程是Java程序最后结束的线程?

297.非常多个线程(可能是不同机器),相互之间需要等待协调才能完成某种工作,问怎么设计这种协调方案。

298.你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎么样去实现它?


异常

299.Error和Exception的区别?

300.UnsupportedOperationException是什么?

301.NullPointerException和ArrayIndexOutOfBoundException之间有什么相同之处?

302.什么是受检查的异常,什么是运行时异常?

303.运行时异常和一般异常有何异同?

304.简述一个你最常见的runtime exception。


finally

305.finally关键字在异常处理中如何使用?

306.如果执行finally代码块之前方法返回了结果,或者JVM退出了,finally块中的代码还会执行吗?

307.try里有return,finally还执行吗》那么紧跟在这个try后的finally{}里的代码会不会呗执行,什么时候执行,return前还是后?

308.在什么情况下,finally语句不会执行?

309.throw和throws有什么区别?

310.OOM你遇到过哪些情况?你是怎么确定的?

311.SOF你遇到过哪些情况。

312.既然我们可以使用runtime exception来处理错误,那么你认为为什么Java中还存在检查型异常?

313.当自己创建异常类的时候应该注意什么?

314.导致空指针异常的原因?

315.异常处理handle or declare原则应该如何理解?

316.怎么利用JUnit来测试一个方法的异常?

317.你曾经自定义实现过异常吗?怎么写的?

318.什么是异常链?

319.在try块中可以抛出异常吗?


JDBC

320.通过JDBC连接数据库有哪些方式?

321.阐述JDBC操作数据库的基本步骤?

322.JDBC中如何进行事务处理?

323.什么是JDBC Template?

324.什么是DAO模块?

325.使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?

326.列出5个应该遵循的JDBC最佳实践。


FIle

327.File类型中定义了什么方法来创建一级目录?

328.File类型中定义了什么方法来判断一个文件是否存在?


329.为了提高读写性能,可以采用什么流?

330.Java中有几种类型的流?

331.JDK为每种类型的流提供了一些抽象类以供继承,分别是哪些类?

332.对文本文件操作用什么I/O流?

333.对各种基本数据类型和String类型的读写,采用什么流?

334.能指定字符编码的I/O流类型是什么?


序列化

335.什么是序列化?如何实现Java序列化以及注意事项?

336.Serializable与Wxternalizable的区别?


Socket

337.socket选项TCP NO DELAY是指什么?

338.socket工作在TCP/IP协议栈的哪一层?

339.TCP、UDP区别以及Java的实现方式。

340.说出几点IO的最佳实践。

341.直接缓冲区与非直接缓冲器有什么区别?

342.怎么读写ByteBuffer?ByteBuffer中的字节序是什么?

343.当用System.in.read(buffer)从键盘输入一行n个字符后,存储在缓冲区buffer中的字节数是多少?

344.如何使用扫描器类令牌化?


面向对象编程

345.解释下多态性,封装性,内聚以及耦合。

346.多态的实现原理。

347.封装,多态,继承分别是什么?

348.对象封装的原则是什么?


349.获得一个类的类对象有哪些方式?

350.重载和重写的区别。重载的方法能否根据返回值类型进行区分?

351.说出几条Java中方法重载的最佳实践。


抽象类

352.抽象类和接口的区别

353.抽象类中是否可以有main方法?

354.抽象类是否可以实现接口?

355.抽象类是否可以继承具体类?


匿名类

356.匿名内部类是否可以继承其他类?是否可以实现接口?


内部类

357.内部类可以分为几种?

358.内部类可以引用它的包含类的成员吗?

359.请说一下Java中为什么要引入内部类?还有匿名内部类?


继承

360.继承与聚合的区别。

361.继承和组合之间有什么不同?

362.为什么类只能单继承,接口可以多继承?

363.存在两个类,B继承A,C继承B,能将B转换为C吗?如C=(C)B。

364.如果类a继承类b,实现接口c,而类b和接口c中定义了同名变量,请问会出现什么问题。


接口

365.接口是什么?

366.接口是否可以继承接口?

367.为什么要使用接口而不是直接使用具体类?接口有什么优点?


泛型

368.泛型的存在是用来解决什么问题?

369.泛型的常用特点。

370.List能否转为List?


工具类

日历

371.Calendar Class的用途。

372.如何在Java中获取日历类的实例?

373.解释一些日历类中的重要方法。

374.GregorianCalendar类是什么?

375.SimpleTimeZone类是什么?

376.Locale类是什么?

377.Locale类是什么?

378.如何格式化日期对象?

379.如何添加小时到一个日期对象?

380.如何将字符串YYYY--MM--DD转换为日期?


Math

381.Math.round()有什么用?Math.round(11.5),Math.round(-11.5)分别等于多少?


XML

382.XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?SOM和SAX解析器有什么不同?

383.Java解析XML的方式。

384.用jdom解析xml文件时如何解决xml文件时如何解决中文问题?

385.你在项目中用到了XML技术哪些方面?如何实现?


动态代理

386.描述动态代理的几种实现方式,分别说出相应的优缺点。


设计模式

387.什么是设计模式?你用过那种设计模式?用在什么场合?

388.你知道哪些商业级的设计模式?

389.哪些设计模式可以增加系统的可扩展性?


单例模式

390.除了单例模式,你在生产环境中还用过什么设计模式?

391.写Singleton单例模式

392.单例模式的双检测是什么?

393.如何创建线程安全的singleton?

394.什么是类的单例模式?

395.写出三种单例模式实现。


适配器模式

396.适配器模式是什么?什么时候使用?

397.适配器模式和代理模式之间有什么不同?

398.适配器模式和代理模式之间有什么不同?

399.适配器模式和装饰模式之间有什么不同?

400.什么时候使用享元模式?

401.什么时候使用组合模式?

402.什么时候使用访问者模式?

403.什么是模板方法模式?

404.请给出一个符合开闭原则的设计模式的例子。


开放问题

405.用一句话概括Web编程的特点。

406.Google是如何在一秒内把搜索结果返回给用户的?

407.哪种依赖注入方式是你建议使用的?构造器注入还是Setter方法注入。

408.树形成许多普通数据结构的基础。请写出一些这样的数据结构以及何时可以使用它们?


某一项功能如何设计

409.线上系统突然变得异常缓慢,你如何查找问题?

410.什么样的项目不适合使用框架?

411.新浪微博是如何实现把微博推送给订阅者的?

412.简要介绍下从浏览器输入URL开始到获取到请求界面之后Java Web应用发生了什么?

413.请你谈谈SSH整合。

414.高并发下,如何做到安全的修改同一行数据?

415.12306网站的订票系统如何实现,如何保证不会票不被超卖?

416.网站性能优化如何优化的?


曾经参与设计的服务器结构

417.请思考一个方案,实现分布式环境下的countDownLatch。

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

419.在你的职业生涯中,算的上最困难的技术挑战是什么?

420.如何写一篇设计文档?目录是什么?

421.大写的O是什么?举几个例子。

422.编程中自己都怎么考虑一些设计原则的,比如开闭原则,以及在工作中的应用。

423.解释一下网络应用的模式以及特点。

424.设计一个在线文档系统,文档可以被编辑,如何防止多人同时对同一份文档进行编辑更新?

425.说出数据库连接池的工作机制是什么?

426.怎么获取一个文件中单词出现的最高频率?


描述一下你最常用的编程风格

427.如果有机会重新设计你们的产品,你会怎么做?

428.如何搭建一个高可用系统?

429.如何启动时不需输入用户名与密码?

430.如何在基于Java的web项目中实现文件上传与下载?

431.如何实现一个秒杀系统,保证只有几位用户可以买到这个产品?

432.如何实现负载均衡,有哪些算法可以实现?

433.如何设计一个购物车?想想淘宝的购物车如何实现的

434.如何设计一套高并发支付方案,架构如何设计?

435.如何设计建立和保持100W的长连接?

436.如何避免浏览器缓存?

437.如何防止缓存雪崩?

438.如果AB两个系统相互依赖,如何解除依赖?

439.如果有人恶意创建非法连接,怎么解决?

440.如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能?

441.如果系统要使用超大整数,请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数的加法运算?

442.如果要设计一个图形结构,请你设计基本的图形元件的简单实现?

443.如果让你实现一个并发安全的链表,你会怎么做?

444.应用服务器与WEB服务器的区别?应用服务器怎么监控性能,各种方式的区别?你是用过的应用服务器的优化技术有哪些?

445.大型网站在架构上应当考虑哪些问题?

446.有没有处理过线上问题?出现内存泄漏,CPU利用率标高,应用无响应时如何处理的?


描述下常用的重构技巧

447.你使用什么版本的管理工具?分支与标签的区别在哪里?

448.你有了解过存在哪些反模式吗?

449.你用过的网站前端优化技术有哪些?

450.如何分析Thread dump?

451.你如何理解AOP中的连接点,切点,增强,引介,织入,切面这些概念?

452.你是如何处理内存泄露或者栈溢出问题的?

453.你们线上应用的JVM参数有哪些?

454.怎么提升系统的QPS和吞吐量?


知识面

455.解释什么是MESI协议。

456.谈谈reactor模型。

457.Java 9 带来了怎样的新功能?

458.Java与C++对比,二者的异常处理机制的区别。

459.虚拟内存是什么?

460.阐述下SOLID原则。

461.请简要讲一下你对测试驱动开发的认识。


CDN实现原理

462.Maven和ANT有什么区别?

463.UML有哪些常用的图?


Linux

464.Linux下IO模型有几种,各自的含义是什么?

465.Linux系统下你关注过哪些内核参数,说说你知道的。

466.Linux下用一行命令查看文件的最后五行。

467.平时用到哪些Linux命令?

468.用一行命令输出正在运行的Java进程。

469.使用什么命令来确定是否有Tomcat实例运行在机器上?

470.什么是N+1难题?

471.什么是paxos算法?

472.什么是restful,讲讲你理解的restful?

473.什么是zab协议?

474.什么是领域模型?贫血模型和充血模型有什么区别?

475.什么是领域驱动开发?

476.介绍一下了解的Java领域的web service框架。

477.Web Server ,Web Container与Application Server的区别是什么?

478.微服务与巨石应用之间的区别在哪里?

479.描述一下Cookie和Session的作用,区别,各自的应用范围,session的工作原理

480.你常用的持续集成,静态代码分析工具有哪些?

481.简述下数据库正则化。

482.KISS,DRY,YAGNI等原则是什么含义?

483.分布式事务的原理,优缺点,如何使用分布式事务?

484.分布式集群下如何做到唯一的序列号?


网络

485.HTTPS的加密方式是什么,讲讲整个加密解密流程。

486.HTTPS和HTTP的区别。

487.HTTP连接池实现原理

488.HTTP集群方案。

489.Nginx,lighttpd,Apache三大主流Web服务器的区别。

490.是否看过一些框架代码?

491.持久层设计要考虑哪些问题?你用过哪些持久层框架?

492.数值提升是什么?

493.你能解释一下里氏替换原则吗?

494.你是如何测试一个应用的?知道哪些测试框架

495.传输层常见编程协议有哪些?并说出他们各自的特点。


编程题

496.加班10小时以下加班费为时薪的1.5倍。10小时或以上按4元/时计算。提示:(一个月工作26天,一天正常工作8小时)。计算1000月薪,加班9小时的加班费。计算2500月薪,加班11小时的加班费。计算1000月薪,加班15小时的加班费。

497.一家商场有红苹果5元/个和青苹果4元/个出售。模拟一个进货,红苹果和青苹果各进200个,模拟一个出售,二者各卖10个。

498.有这样一个时间字符串:2008-8-8 20:08:08,请编写能匹配它的正则表达式,并编写Java代码将日期后面的时分秒提取出来。如:20:08:08。

499.设计4个线程,其中两个每次对j增加1,另外两个对j每次减少1。

500.wait-notify写一段代码解决生产者-消费者问题。

501.判断101-200之间有多少个素数并输出所有素数。

502.用最有效率的方法算出2*17等于多少?

503.有1亿个数字,其中有2个重复的,快速找到它们。时间和空间要最优。

504.10亿个数字里面找最小的10个。

505.1到1亿的自然数,求所有数的拆分后的数字之和,如286拆分为2,8,6。

506.一个数如果恰好等于它的因子之和,这个数就成为“完数”。列如6=1+2+3,编程找出1000以内所有完数。

507.一个数组中所有的元素都出现了三次,只有一个元素出现了一次找到它。

508.一个球从100米高空自由下落,每次落地后反弹会原来一半,求第10次落地时共经过多少米?第10次反弹多高?

509.求100-1000以内质数的和。

510.用Java Socket编程,读服务器几个字符,再写入本地显示。


反射

511.反射机制提供了什么功能?

512.反射是如何实现的?

513.哪里用到了反射机制?

514.反射中Class.forName和ClassLoader区别?

515.反射创建类实例的三种方式是什么?

516.如何通过反射调用对象的方法?

517.如何通过反射获取和设置对象私有字段的值?

518.反射机制的优缺点。


数据库

519.写一段JDBC连接Oracle的程序,并实现数据查询。


算法

520.写一个冒泡排序。

521.50个人围坐一圈,当数到三或者三的倍数出圈。问剩下的人是谁,原来位置是多少?

522.写一个折半查找。

523.随机产生20个不重复的字符并排序。

524.写一段代码在遍历ArrayList时移除一个元素。

525.写一个函数,传入2个有序的整数数组,返回一个有序的整数数组。


正则表达式

526.请编写一段匹配IP地址的正则表达式。

527.写出一个正则表达式来判断一个字符串是否是一个数字。


字符串

528.写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

529.写一个程序找出所有字符串的组合,并检查他们是否回文串。

530.写一个字符串反转函数,输入abcde,输出edcba

程序员