采用的是双人抢答形式后互相补充回答,整个面试过程持续了一个半小时左右
环节一:自我介绍
环节二:java基础和数据库基础
-
String和StringBuilder的区别
-
List有几类
- linkedList和ArrayList的区别
- CopyOnWriteArrayList的线程安全
-
树与链表的区别
-
java异常有哪几种
- 栈溢出和OOM的场景
- 如何改变栈内存大小
- 除了内存与栈最大可容纳数有关外,还受什么因素影响
-
线程的特性有哪些,线程的创建方式有哪几种
- 线程如何返回线程处理的结果值
-
停止线程的方式有哪些
-
volatile的作用,volatile的特性,volatile为什么不是绝对线程安全的
- CAS到ABA现象
-
为什么hashMap中有使用红黑树而不是其他的树
-
mysql中的存储引擎有哪些
-
MyISAM和InnoDB的区别
-
在一个自增id的表中,如何最快找到第二大id的数据
-
学生表,课程表,课程得分表,请使用语句查询到每个课程中得分最高的学生的名字和他的分数。
-
在选择一张1000w数据的表时,使用MyISAM和InnoDB查询,哪个更快,为什么
-
如何避免数据库查询过慢。
- 在什么情况下,你会设计表的数据冗余(防止join过多)
15.补码的作用
环节三:逻辑与算法
- 给你一个单向链表,你如何在最小的时间复杂度内寻找到链表中间下标的对象
- 给你一个对象链表,你如何将其中id相同的对象去重(并未重写hashCode方法)
- 给你一个整数,怎么样区分他的奇偶性
- 一条分布不平均的绳子烧完需要一小时,给你两条一模一样的绳子,如何计算45分钟
- 两个瞎子,各自买了一黑一白两双袜子,但回家的过程中被打乱了,请问他们如何才能正确拿到自己的袜子(一黑一白)
- 一箱苹果有1000个,如何打包可以在客户来到时选择任意个苹果时,都可以直接不需要打包直接拿走(动态规划)
- 一串数字,如何才能最快的判断这串数字里有多少个零。
环节四:项目相关
(在我一个模仿spring框架的项目中提问我注解的知识点)
- java原生注解类型有多少种,分别是哪些,说出他们的作用
- 你在注入时是如何解决注入的并发问题的。
- 那你如何保证你注入的组件是单例的还是多例的
- 框架工作时大致的工作流程和原理。
(在我一个使用了mybatis中提问)
- mybatis如果字段与数据库字段不统一,你有几种方法可以解决。
- mybatis中的一对多查询,有几种方法可以实现。区别是什么。
(关于之前说到io模型,和之前长流跟打器使用bio的一些知识点)
- io模型分为几种,他们的区别是什么
- 为什么要重构,bio的弊端。
(linux)
- linux中你需要知道程序是否在运行,如何编写命令
网友评论