当前位置: 首页 > 面试经验 >

百度25届Java提前批一面凉经

优质
小牛编辑
77浏览
2024-07-16

百度25届Java提前批一面凉经

#软件开发笔面经#
7.15北京时间上午十点一面
简单自我介绍,
讲一下之前接触过的项目,只是简单的介绍了一下项目,没有太深问大概十分钟。
-----------------------------开始问些简单八股--------------------------
1、讲一下hashcode()和equals()关系
equals()和==有什么区别
2、讲一下重载和重写的区别
3、讲一下深拷贝、浅拷贝的区别
深拷贝会从堆内存中完全复制一个对象,浅拷贝只是复制对象的符号引用,但是浅拷贝对象和原对象共指向同一个内存地址
4、讲一下Java异常的基类
运行时异常举几个例子,简单聊一下什么情况下会出现
StackOverFlow、ArrayIndexOutOfBoundsException、NullPointerException
5、Java并发了解吧
5.1 讲一下 线程的几种状态(new、ready、running、waiting、terminated)
状态间是如何切换的、线程在ready状态能否sleep(不能,因为在ready状态还没有获取到资源,而sleep是线程运行时操作,且不会释放资源)
5.2 sleep 和 wait 的区别,sleep不会释放资源,wait会释放资源
6、聊一下锁吧(因为在聊线程并发的时候,我总是提到锁的问题,所以面试官就顺着聊了)
6.1 聊一下 乐观锁 和 悲观锁
CAS 什么原理,属于什么,Java中哪些操作使用了CAS,CAS是否是原子性的,如何规避ABA的问题(这个是我自己提的,但是我忘了怎么解决了,扣分-1)
6.2 聊一下 公平锁 和 非公平锁
自己聊到了 reentrantLock 是怎么实现公平锁和非公平锁的 (参数设置true / false),
synchronized 是公平的吗(这里又聊错了扣分-1,synchronized是非公平锁,这意味着在多个线程竞争同一个锁的时候,锁的分配是随机的,不能保证先等待的线程先获得锁)
(非公平锁的实现更加简单,不需要维护一个复杂的等待队列和公平调度机制,减少锁实现中的开销)
6.3 聊一下 重入锁(reentrantLock)(没聊明白扣分 -1)
重入锁允许线程在持有锁的情况下再次获取锁而不会被阻塞,重入锁可以防止死锁
6.4 了解死锁吗?如何避免死锁?用什么可以避免死锁?如何解除死锁
7、线程池说一下适合什么场景吧,最好结合自己做过的项目举例
聊了一下自己在项目中应用线程池的场景,
--------在之前的项目中 MySQL 应该是主要应用数据库吧,来简单聊一下 MySQL---------
8、讲一下什么数据适合做 索引
不为 null、差异化大的数据、不经常修改的数据、作为join外键的字段、(面试官还举了他们最近项目的几条数据问适不适合做 索引字段)
8.1 考验最左匹配原则,现在有这样一个联合索引(a,b,c,d)
那么在 查询 where a=2 and b=3 and c > 4 and d = 5这个语句用到了什么索引 (答错了扣分-1)
由于 c 用到了范围查询,因此这里只用到了(a,b,c)联合索引,没有命中d的索引
那么 在 查询 where a in {1,2,3} b = 3 这里用到了什么索引
这里 a 用到了等值查询或IN关键字,因此 b可以命中索引,所以这里是命中了(a,b)索引
9、讲一下项目中遇到的慢SQL 是怎么排查的,后面是怎么解决的
EXPLAIN 语句查看是否命中索引,
10、SQL事务了解吗,并发情况下会有什么问题 简单介绍一下
SQL 事务隔离级别(那四种)分别解决了什么问题(脏读、不可重复读、幻读)
11、来做个简单SQL题 (答错了扣分 -1)
当前有一个表 想要查询 第二高薪资的员工,怎么用一个sql写出来
使用子查询 或 窗口函数
------------------差不多还剩二十几分钟了,来做一个简单的算法题----------------
用的如流内嵌的代码考验窗口
输出 最大值连续子序列 ,O(n) 复杂度的怎么写
------------------卡点一小时结束面试,半小时后官网挂了-----------------------
 类似资料: