面试复盘 | 百度MEG-QA提前批Java后端三面面经

如流 软件视频面试,手撕代码时共享屏幕


一面 8.9

面试官是个小姐姐,面试官首先自我介绍,说了一下大概的面试流程,赞

  1. 自我介绍(比较短,一直不知道怎么自我介绍)

  2. 问项目

  3. Redis为什么快(基于内存,IO多路复用,单线程,使用C语言并有很多优化)

  4. Redis数据结构对于内存占用的优化(sdshdr5, sdshdr8, sdshdr16, sdshdr32, sdshdr64, 字符串越短,使用越少的内存存储额外信息;list 和 hash 元素少的时候使用 ziplist 编码)

  5. Mysql 索引类型(聚簇索引和非聚簇索引,hash索引)

  6. 数据库读写分离的优缺点(写会加锁,降低数据库并发量,读写分离提高并发量;缺点是读服务器会存在延迟)

  7. rabbitmq 介绍(说了topic,direct,fanout,header模式),重复消费问题(没答上来,说项目中没考虑到)

  8. springboot 最大的特点(自动配置),启动注解和配置文件(记不清了)

  9. JVM 内存模型和各自作用(程序计数器,JVM虚拟机栈,本地方法栈,堆,方法区),哪些是线程私有的(程序计数器,JVM虚拟机栈,本地方法栈)

  10. String 能被继承吗(不能,被final修饰),和StringBuilder,StringBuffer区别(这两个可变,StringBuffer线程安全)

  11. 重写重载区别(重载:方法名字相同,参数不同;重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写),重写的修饰符和抛出异常大小(重写方法的修饰符更大,异常更小)

  12. 查看进程的指令(ps),查看cpu使用情况(top),改变文件权限(chmod

  13. TCP 可靠性(面向连接,数据包校验,重新排序,超时重发,流量控制)

算法题:

  1. 判断一颗树是否为avl树(递归做)

  2. 判断一个数是否回文(转换为字符数据,使用双指针法或者StringBuilder的reverse()方法)

最后反问


总结:rabbitmq,springboot 只是使用,没有详细了解原理,相关问题没答上来

薄弱点:

  • Springboot还需要继续学习,了解原理

  • Rabbitmq常见问题的解决方案要熟悉,挺常问的

  • 自我介绍一直很短,一分钟以内,想问下大家都是怎么自我介绍,要介绍的多细
第二天收到电话约二面


二面 8.12

  1. 接口和抽象类区别(接口是动作的抽象,抽象类是一种所属关系...)

  2. volatile作用(可见性,禁止指令重排),什么是可见性问题

  3. 常见容器(List,Set,Hashmap),Hashmap原理(数组 + 链表、红黑树),resize() 过程,多线程会产生什么问题(循环链表),怎么产生循环链表(没答出来)

  4. 怎么解决HashMap多线程问题(加锁),说了ConcurrentHashMap的put过程

  5. 说说线程(CPU调度分派基本单位...)

  6. 进程如何同步(管道,命令管道,信号,信号量,共享内存,套接字),信号量怎么通信(P操作,V操作)

  7. 线程独有的对象(ThreadLocal,原理没说清)

  8. 类加载机制(双亲委派模型),有什么加载器,分别加载什么,怎么破坏双亲委派机制(重写loadClass方法),破坏双亲委派机制自己实现加载器加载java.lang.String可以吗(不可以,不懂怎么保证的)

  9. 标记-清理过程

代码:

  1. 单例模式

  2. 最长回文子串(动态规划,中心扩散)

  3. 包含min函数的栈(栈 + 辅助栈)
最后反问环节
总的来说,面试官是个小姐姐,面试过程中会引导你,面试体验很棒


问题讨论:

  1. HashMap多线程下循环链表产生的原理,有大佬详细说一下嘛

  2. 破坏双亲委派机制后,怎么保证java.lang.String不能加载(java.lang.ClassLoaderd的preDefineClass 方***检查类名,发现以java作为一级包名,则抛出安全异常:禁止使用的包名)
第二天收到电话约三面


三面 8.17

聊了项目,学校,实验室,选择,有点像hr面
许愿测评 + 意向书
#面试复盘##百度##Java工程师##面经##校招#
全部评论
借楼许愿!!
点赞 回复
分享
发布于 2021-08-18 16:57
英特尔
校招火热招聘中
官网直投
借楼许愿!!
点赞 回复
分享
发布于 2021-08-18 17:15
点赞 回复
分享
发布于 2021-08-18 17:16
楼主收到OC了嘛
点赞 回复
分享
发布于 2021-08-18 17:16
借个楼 北森可以内推 私我😊
点赞 回复
分享
发布于 2021-08-18 18:41
循环链表一般发生于1.8以前呀 因为他是倒着排的
点赞 回复
分享
发布于 2021-08-18 18:55
请问手撕代码是在ide上写还是在白板?
点赞 回复
分享
发布于 2021-08-18 20:08
hashmap循环链表就是因为扩容前某个数组元素下的链表顺序被继承到了扩容后新数组中,然后和rehash()产生冲突导致循环链表,具体可以去博客看看
点赞 回复
分享
发布于 2021-08-18 22:09
楼主base哪
点赞 回复
分享
发布于 2021-08-18 22:40
1号7时候是用的头插法在transfer方法中,可以去看看
点赞 回复
分享
发布于 2021-08-18 23:14
借楼许愿
点赞 回复
分享
发布于 2021-08-18 23:26
请问楼主有实习经历吗?
点赞 回复
分享
发布于 2021-08-18 23:45
真的棒 加油
点赞 回复
分享
发布于 2021-08-19 00:04
点赞 回复
分享
发布于 2021-08-19 00:23
avl树的输入怎么写的呀楼主,是先自己构建树嘛
点赞 回复
分享
发布于 2021-08-19 08:24
借楼许愿
点赞 回复
分享
发布于 2021-08-19 08:56
借楼许愿,16号面完也在等测评+意向
点赞 回复
分享
发布于 2021-08-19 09:20
qa 都这么卷
点赞 回复
分享
发布于 2021-08-19 11:04

相关推荐

42 198 评论
分享
牛客网
牛客企业服务