京东1、2 面+ HR 面面经
一面
本来视频面试,但是由于面试官视频有点问题因此改成电话面试,水果手机没法电话录音因此问题有所缺漏。全程 26 分钟,涉及内容包括 Java 数据类型
1. Java 里面什么是值传递什么是引用传递
基础类型是值传递、引用类型是引用传递
2. 有啥数据类型
我回答了列表、栈、队列、set
3. ArrayList 和 LinkedList 有啥区别
前者数组,查找时间复杂度低,删除时间复杂度高,需要扩容;
后者链表,查找时间复杂度高,删除时间复杂度低,不需要扩容
4. 知道 HashSet 么?
知道,其实底层封装了 HashMap
5. ArrayList 和 HashSet 有什么区别?
一个是列表,一个是 set,set 保证了数据的唯一性,而列表不会
6. 什么时候用 Set 什么时候用 列表
???需要保证数据唯一的时候用 set,不需要的时候用列表呗
7. 怎么保证数据的唯一性?
因为它的底层是 HashMap,因此我们需要保证他的 hashcode() 方法得出的结果唯一,所以我们可以重写这个方法。
8. String、StringBuffer、StringBuilder 的区别
String:不可变,线程安全
StringBuffer:可变,线程安全
StringBuilder:可变,线程不安全
9. 什么时候用上面三者?
看情况
10. 什么是 Spring IoC?
控制反转,即新建 bean 实例不需要使用类来进行 new,而是通过构造方法、方法设置以及依赖注入的方法来实现。
11. 用过什么注解?
@Autowired
用来自动装载,@Controller
标注 Controller 类,@Service
标注 Service 类,@Configuration
标注配置类等等
12. @Autowired
和 @Resource
有什么区别?
不知道,没用过后者
13. 如果代码中写了@Autowired
但是实际上不想让他装载,应该怎么办?
我回答了在@ComponentScan
注解里面把这个类所在包从扫描的包中剔除
14. Spring 单例有什么好处和坏处?
好处:bean 的生命周期完全由容器控制,不需要担心类的创建、空间的浪费
坏处:如果有一些变量什么的可能会导致线程不安全
15. 有什么办法能解决上面的线程安全问题?
可以直接给属性加 synchronized 关键字,或者将属性设为私有的,通过方法来访问,这些方法必须使用锁或者 synchronized 关键字修饰。
16. 如果不用锁呢?
可以使用自旋锁 + CAS 的方法
Mybatis 中 # 和 $ 有啥区别?
不知道。。。
什么是 Spring AOP?
面向切面编程
有啥问题
略
二面
emmm。。又是电话面,没有录音。全程大概 30 分钟不到,感觉还可以
1. 问了项目相关问题
略
2. JVM 的垃圾收集算法?
标记删除、标记复制、标记整理
3. 红黑树产生的背景和应用
(背景我咋知道啊。。。几几年谁谁谁提出的?)应用比如说 Java 中的 HashMap(尽量往自己知道的方面扯)。
4. 操作系统了解吗?
除了日常使用的一些命令之外,其他的就不是很了解,比如说内核态用户态什么的不是很清楚。
5. 查看端口是否被占用用什么命令?怎么查看端口的 TCP 连接呢?
前者用 lsof -i,后者应该可以用 netstat 查看吧
6. 项目中用到的分布式锁
项目里没有用,但是可以使用 数据库、redis、zk 做分布式锁
7. 数据库事务隔离级别
四种
读未提交、读已提交、可重复读、串行化
8. 数据库里面的锁
emmm。。。如果说从锁的范围来说,有表锁、页锁、行锁、全局锁。如果说底层的话,有 record lock、gap lock、next-key lock。如果说锁的竞争机制的话,有乐观锁、悲观锁,很多
9. 常用引擎中有哪些锁?
上面的锁,innodb 中都有。但是 MyISAM 不支持事务,因此他只有全局锁。
10. 分布式事务算法有些?
不知道。。。
11. 在项目里的主要贡献?
略
12. 学习生涯中哪些对你帮助最大?
略
有啥问题?
略
HR 面
电话面木有录音,题目都列出来了答案就不回答了,因人而异参考也无用。面试官感觉是个新入职的小姐姐,感觉不太有精神。。。大家都要加油啊!