java开发工作经验面试题集锦

发布时间:2019-07-07 13:42:58   来源:文档文库   
字号:
关于java基础

1. String,StringBuilder,StringBuffer区别是什么?底层数据结构是什么?分别是如何实现的?

2. HashSet的底层实现是什么?它与HashMap有什么关系?

3. Java 的并发包里面有那些知识点?

4. HashCodeHashMap的关系?

5. 哈希函数的理解?

6. mapput()的做了哪些事?

7. 如果发生hash碰撞,有什么方法可以解决?

8. 各种类型的锁?

9. synchronizelock

10. hashTable的数据结构?

11. 线程安全的mapHashTableCurrentHashMap,底层的线程安全是如何实现的?

12. hashCode的原理?

13. 什么情况下需要重写类的hashCode()方法?什么时候需要重写equals()方法?

14. hashmap添加元素,如果通过hash值得到的位置如果有元素,哪一种情况会取代所在的元素?

15. HashMap添加元素,如果是所得的桶数组的位置有值。该值则被添加到链表尾端,为什么会是尾端?

16. Listhashmap底层结构,以及CurrentHashMap解决了什么问题;

17. Hashmap的是否线程安全?为什么是安全或者不安全?

18. HashMapHashTable以及ConcurrentHashMap的区别;

19. volatile关键字的理解;用在哪些场景?

20. 线程的理解以及其实现方式;

21. 线程池的参数有哪些?实现原理;

22. 线程同步方法有哪些?

23. 缓存的原理?为什么要用缓存?为什么会比数据库查询快?

24. 反射机制的理解;

25. Object中的方法;

26. StringtoString()方法的实现?底层原理?

27. NIOIO的异同;

28. 垃圾回收机制的理解;

29. java8的新特性有哪些?如何使用?

30. static关键字的场景和意义;(拓展:final

31. 如何理解事务?

32. 虚拟机的内存结构;

33. 动态代理的两种实现方式;

34. 悲观锁和乐观锁的区别

35. 如何解决跨域问题?

36. xml文件解析方式有几种

37. synchronize的锁的类型

38. 秒杀系统的设计

39. 分库分表

40. Spring底层是如何实现的;

41. Tomcat容器启动的时候,spring的启动流程;

42. SpringAop除了动态代理,还用了其余的什么原理?

43. rpc框架

44. 事务的隔离级别和传播机制

45. docker

46. 高峰期如何进行分流

高并发

1. 造成线程安全的主要因素有哪些:

2. 互斥锁是什么?java锁如何分类?

3. 关于锁名词的分类

4. 线程的创建方式;

5. 三种创建方式分别有什么区别?(最终可以追究到最底层)

6. 线程池的核心参数是哪些?分别表示什么意义?

7. 通过线程池创建线程的流程是什么?

8. Lock接口;

9. synchronizevolitile的区别?

10. 设计一个高并发的网站通用的技术有哪些?

11. CAS是什么?

12. JUD是什么

分布式

1. 关于分布式的一些基本概念

2. springbootspring相比优势是什么?

3. springboot自动配置的原理是什么?

4. 如果自己集成一个jar包到springboot中,该如何做?

5. 如何解决分布式事务问题?

web

1. servlet的实现以及其中的方法;

2. token生成的原理;

常用的设计模式关于前端

1. 闭包的理解;

2. js函数的理解;

3. 如何优化前端?

关于框架spring

1. springIOC的理解;

2. spring是如何通过xml配置或者注解配置生成实例对象的?

3. springIOCjava底层原理;

4. 反射

5. springAOP的理解;

6. springAOP的底层的实现原理;

7. spring如何解析视图;

8. spring的常用注解;

9. springmvcStruts2的差异;

10. 如何控制事务;

11. 事物的隔离级别和传播机制;

12. Spring BeanFactoryFactoryBean的区别;

13. springAOP的应用场景;

mybatis

1. mybatis的结构?

2. 配置文件如何配置?

3. mybatis处理多个参数的几种方式?

4. 占位符有几种?区别是什么?

5. 一级缓存和二级缓存的区别?

6. Mybatis的类型转换器?

7. mybatis接口没有实现类,他是如何操作数据库的?

hibernatemybatis hibernate的对比;优势,劣势,原理,如何选择;

项目

Mybatis

Hibernate

开发效率

较容易上手;需要手动管理sql

较难上手;无需管理sql,专注业务

入门

简单

较难

灵活性

sql更加灵活

几乎不用写sql,封装性较大

性能

相对较高

相对较低

日志系统

除了基本记录功能外,功能薄弱很多

志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等

优化

更容易

更难

自动性

半自动

全自动

缓存

有更好的二级缓存机制

移植性

移植性低(绑定了sql

移植性高

适用场合

1.有复杂的查询业务;2.hibernate实践经验的

1.无复杂的查询业务;2.能够熟练应用hibernate

SpringBoot

1. springbootspringmvc最大的优势在哪?

2. 一个加了事务注解的“新增方法”,抛出异常,数据有没有添加成功?

关于工具的使用

1. gitsvn的区别以及各自优势

2. Jenkins的搭建和配置;

3. maven是如何管理jar包版本的;

关于数据库关系型数据库

1. limit关键字从010与从100000200000效率相差几个数量级,为什么?

2. mysql的架构;

3. 索引的原理;

4. 索引的选取原则(通用):

5. 为什么索引导致查询效率高?操作数据效率低?

6. 索引的底层结构是什么?是如何实现的?

7. 哪些查询会用到索引?哪些查询用不到索引?

8. 索引类型?

9. 聚集索引和非聚集索引

10. 聚集索引的优缺点

11. mysql索引的数据结构

12. 数据库的隔离级别分别是什么?

13. sql的优化方案;

14. left join inner join的差别;

15. mysql的存储引擎MyIsamInnoDB的区别;

16. 主键和唯一索引有啥区别?

17. 唯一索引能不能为空?

非关系型数据库

1. 常用哪些非关系型数据库?哪些场景会用到?

2. redis如何进行持久化?

关于网络协议

1. UDPTCP的异同;

2. http的理解;

3. webSocket编程;

4. 什么是ajax?原生的ajax如何写?

5. 比较get请求和post请求的异同;

关于linux操作

1. 常用的文件操作命令;

2. 查看线程信息的命令;

3. 查看内存的命令;

4. 部署项目的命令;

5. macLinux服务器文件传输命令;

关于算法

1. 常用的排序算法有哪些,分别如何实现(原理)?

2. java中有哪些排序方式?原理是什么?

3. 两个按降序排序的数组,用效率最高的算法组合成一个按降序排列的新数组;

4. 回文字符串的个数;

5. 一个若干字符串中括号的对数;

6. 斐波那契的实现;

7. 单向链表反转?

8. 台阶问题?

9. 输入一个字符串,输出一出现频率最高的字符,如果出现频率相同,则输出第一个字符;

关于数据结构

1. 常用的数据结构;

2. hashmap是什么数据结构?

3. 堆、栈、队列的特性是什么?

4. 树的应用场景是什么?

5. 二叉树与红黑树的理解;

关于所做项目

1. 读写如何设置同步和异步;

2. 如何处理排他处理?

思路:数据库中存一个时间戳字段,每次加载页面的时候将时间戳带到页面隐藏域。向后台发送请求的时候将该时间戳与数据库中所存的时间戳对比,如果一致的话说明该数据没有被他人更新,如果不一致说明数据被他人更新了。

3. 如何判断用户是否重复操作;

可以有如下几种方案:

1 数据库层面:添加唯一性约束,通过账号、名称等信息进行唯一性约束;

2 页面层面:可以对操作按钮进行点击限制;

3 后端层面:提交时生成的token(一般是时间戳),存与session,提交到后端与之对比;

4. 如何实现实时显示大计算的结果?

5. 如何防止重复支付或者重复退款?

6. 项目中如防止重复生成订单?

7. 项目中遇到什么难题?是如何解决的?

8. 下单时,如果在支付的时候,反馈给用户的是失败,然而调用第三方是成功,如何处理?

9. 首先要缕清所有的流程,然后再拿出对应的数据表结构

关于分布式

1. 分布式框架有哪些?

2. dubbospring cloud的比较;

3. Restful风格的接口的理解;

4. rpc框架有哪些?如何使用?

5. rpchttp的对比;

6. 负载均衡的理解;

7. 常用的mq的种类;(补充)

8. RabbitMQ的作用?

PSSongLea

1. 一个字符串里有多个左右括号 如何判断这些括号都是一一对应的

2. 手写一个单例模式的代码

3. 手写实现一个blockingqueue的实现

4. 线程池的数量怎么确定,设多少?

5. 手写怎样实现一个LRU的缓存

6. lru:最少未使用算法

7. redisrabbitmQ部分知识

8. 手写代码去实现一个读写锁

9. 代理模式有什么好处,怎么实现的

10. Linux常用命令,如查看磁盘空间,内存大小,CPU利用率,机器信息,Jvm上的内存占用信息。。。

11. btree树,线程池,数据连接池,秒杀系统设计,回文字符串个数,线程如何变成运行态,事务的两种方式,垃圾回收机制,索引,hashmapconcurrenthashmap的结构

12. 缓存穿透如何解决

13. object有哪些方法,hashmap线程安全不

14. hash一致性,JUC包与sync关键字锁的区别与理解

15. aba的问题;

16. 什么是乐观锁?什么是重入锁?

17. CAS操作;

18. 常用的集合框架的底层实现;

19. 乐观锁和重入锁;

20.

本文来源:https://www.2haoxitong.net/k/doc/299434a8591b6bd97f192279168884868662b871.html

《java开发工作经验面试题集锦.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式