首页 > 货拉拉Java实习一面
头像
hrdate
编辑于 2022-03-15 21:00
+ 关注

货拉拉Java实习一面

3-3号下午四点多投。
原本还是摸鱼,一边听B站直播讲RNB打微博,听shy哥被单杀(在看看GitHub上的RPC怎么写)
没想到晚上差不多八点的时候,面试官就打电话给我,问是什么时候有时间?
第一反应是特别紧张?三月份开始投简历,大厂一个都不敢投,第一次有人回应。
我就全都瞎说,“这两天可以吗?”“明天可以吗?”“电话面还是视频面”,然后就3-4号下午四点面了。
因为是电话面的缘故把,没有做题,所以没有敲代码时的手抖,加上语言组织也是一边想一边说(这一点在反问时有给我建议)

面试时间记录了下是1时16分钟。面试管挺和善的,场景题也有提醒一下。

1.自我介绍
说了下大学经历,拿过过区域赛铁牌,大二下后跑路学Java
2.说说你在Java方面比较熟悉的部分
瞎说,并发其他方面都有所学习。(但除了微服务,计网和OS,但全部都问了)
3.你刚刚说到了JVM,简单说说内存区域
程序计数器,虚拟机栈,本地方法栈,堆,方法区(元空间)
4.你刚刚提到了虚拟机栈,再仔细说说
局部变量表,操作数栈,动态连接,方法返回
5.说完了栈,我们接着聊聊堆
新生代老年代,新生代8:1:1,对象分配,垃圾回收
6.说到垃圾回收,你用过什么垃圾回收器吗?
只用过默认JDK1.8的CMS(其实是 Parallel Scavenge + Parallel Old)
7.那G1呢?
说了下,自己不是很熟悉,然后就瞎说,整体-局部-对象活跃...
8.聊完JVM,那我们说说并发,多线程那些,说说你的理解
我给自己挖坑,然后说Synchronized,CAS和AQS都有了解过。
然后就开始漫长的解释,Synchronized从偏向锁,轻量级锁到重锁;说CAS,定义和ABA问题;说AQS,虚拟双向队列和CAS维护state。
9.你刚刚提到了ReentrantLock,其中其中可以中断/打断,打断后会不会线程结束?
这道题我不会,就瞎说,不会结束,类似线程的wait,sleep,join,yeild方法,然后就再接着解释,这种的方***不会释放锁或资源,被notify,和Interrupted后...
10.你知道ThreadLocal吗?
线程创建副本,各个层方便用,再说说了内存泄露问题
11.说说Java中的集合Map?
说了下底层数据结构的变化,说了下get,put方法,每次都是扩容2倍数,说了下hashset是由hashmap实现的
12.为什么hashmap底层先是链表后才是红黑树
扯了下维护红黑树追求效率高的前提是数据量大,数据量小时,维护从根节点到节点红黑节点个数相同,需要左旋和右旋需要时间和空间开销。
13.那接着聊聊数据库,指导数据库事务吗?
然后开始扯RR隔离级别的MVCC由ReadView和undo log一些东东实现
14.刚刚提到了log,你还在别的log吗?
说了下redo log重做日志-物理,bin log归档日志-逻辑,再提了下MySQL实际上是两段提交,也就是两次redo log
15.说说索引
主键索引和二级索引(辅助索引)定义和过程,使用B+树而不是B树的好处
16.索引失效知道是什么情况吗?
组合索引,最左匹配
17.创建索引需要注意什么?
....吹了几个
18.说说数据库中的锁吧,你知道几个?
共享锁,排它锁,行锁,间隙锁,意向锁,行锁+间隙锁,解决幻读
19.数据库锁的场景题
表t有主键id,和列A,B,C
问select * from t where a = 1 for update 和 select * from t where id = 1 for update
分别锁的是什么(只会背书,不会做题呀,面试官提示了下,瞎说a=1锁表,id=1锁行)
20.我们平时使用的数据库都说千万上亿级别的,你会怎么处理?
先说了下,我只知道MySQL数据库也可以主从复制,通过bin log更新数据。
21.大数据怎么处理表呢?
水平分割,垂直分割
22.追问按照时间段水平分割处理表格有什么不好的地方?
不便查询,没有想到更好的优化方法,估计只能(加钱)换更好的服务器
23.说了这么多,你会别的框架吗?
瞎说spring,spirng boot,然后就开始问bean的生命周期。
真心不会呀,只记得实例化bean,通过set设置属性,然后传入spring设置bean的id,接着beanfactory设置属性名....后面记不清楚了,知道有自定义init-methon方法,知道有个接口post....啥的方法可以用来预热缓存
24.你还知道spring其他属性吗?
说了下AOP,用过AOP做过日志操作处理,说了下继承和AOP的区别,说了下JDK代理的实现
25.还用别的框架吗?例如你项目写的MQ
哦,不会MQ,只是用过rabbitmq,知道它默认宕机后消息不会丢失会留在文件中存储
26.知道double吗?
哦,不会呀,只是最近在学RPC,在尝试用netty手写个简化版的
然后让我说说一下简化的过程,说的很不好,感受到面试官的感叹了
27.在高并发的过程中,会用很多东西,知道redis的rehash机制?
当时我傻了,我当时看《Redis设计与实践》时看到这个东西贼长贼臭就跳过了。原本想扯hashmap的扩容过程的,但是被面试管发现意图,打断了。直接说不会了。
28.知道redis的集群吗?
不会,只会简单的主从复制和哨兵,然后就瞎扯RDB和AOP,接着说心跳机制和主从切换(反正说的很乱和潦草)
29.然后就开始问项目了,说了下我简历上的简易秒杀
问,你说说自己的亮点?分布式锁+LUA,令牌捅算法解决并发
再接着问,如果解决超卖?我人傻了,因为我也忘记了,我当时对着视频和GitHub抄,一时忘记,然后瞎扯数据库建表用唯一索引,执行sql语句,Redis删减...然后不对
30.反问,说了下第一次面试,问问努力的方向
项目经验少,可以找几个真的项目看看(我也知道我一个学生写不好秒杀,当真没项目)
有些问题,可以先组织下再回答(不会肯定乱答啊)
然后就是说辛苦了,基础还可以,接着就是问能实习到什么时候。uo

更多模拟面试

全部评论

(10) 回帖
加载中...
话题 回帖