面试官很友善,为啥反手挂?

恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经,目前已更新至美团、微软…
https://www.nowcoder.com/discuss/580423415450849280

随便聊聊

去年秋招结束后没怎么更新笔经面经了,21、22年就关注的老粉应该了解,工作之后时间很有限,经常on call,难得有一个安静的周末午后也想要放空下脑子,读读闲书,或者出门逛逛,固定更新的时间少了很多。下面这张图是21年底冲单+护堤完后,凌晨两点多回家在出租车上拍的照片,天正下着小雨,那时因为刚工作不久,而且是第一次参与这么大的活动,声哥竟然在疲惫中还夹杂着一点点激动,这或许是应届年轻人的冲劲吧~
面试官很友善,为啥反手挂?_第1张图片

从面试小白到大厂offer拿个遍的往届校招生,再到工作三年多的开发(不多不少,刚刚积累了一些工作实战经验,但又没和学校培养完全脱节),确实有很多想要总结出来的东西,比如转专业、刷题、笔试面试、简历、offer选择等等大家正在经历的问题,到晋升、涨薪、向上管理、okr、绩效、年终奖、活水、跳槽等大家即将面对的问题,声哥希望在2024可以慢慢呈现给大家,到了社会才知道,懂行的人点拨一下,比自己瞎鼓捣大半年都管用,职场的坑和机会都太多太多,刚工作三年内的应该有同感。

回到问题,明明感觉面试官很友善,也有互动,但还是挂啦?为什么???

理由很简单,因为决定你拿到offer,或者说进入下一轮的因素,不仅仅局限于你和面试官之间,更要考虑团队需求、招聘成本、横向比较、老板个人偏好等等因素。这个问题展开有很复杂了,但是稍微换成面试官视角你大概就明白了,我作为面试官,通常是问老板,或者业务要hc,但也有可能是有人离职空出hc,我会拿着这个hc让hr提供人选给我面试,招聘渠道也是五花八门,内推、活水、社招等等,所以我肯定同阶段会面试多个人,所以单个面的时候我可能觉得都不错,但是全部面完后我会拿着多个面评问问老板,综合比较下,众所周知,海量=1hc,往往淘汰是在面试那一小时以外发生的,所以即便我面试的时候觉得你答的还可以,但可能另一个候选人的项目经历更匹配,甚至可能是更近的一所985,老板就直接拍板子要了,这时候作为第一轮面试官也是很无奈。。。还有可能是你以往的面评太差了,并且还都是近期的面试。。这可能也是一个因素。总之,我给大家的建议是,做好最全的准备,呈现最佳的自己,就够了,其他就看运气和眼缘了,千万不要精神内耗+怀疑自己,毕竟一个坑的团队和老板,你没进去,也是一种运气?

下面简单回顾下面试的问题,我在每个问题后面简单说明了下,大家可以发散思考,主要还是些八股,核心是要弄懂原理。

基本情况

投递岗位:Java开发工程师

投递部门:快手

招聘类型:日常实习

问题记录

1. List和Map有啥不同

说了一些最基础的然后就扯到了HashMap和ConcurrentHashMap,就说了底层的实现以及1.7、1.8版本前后有啥不同(但面试官只问了我list和map有啥不同,我有点紧张一下子想不起来太多,就往底层我知道的引导了)。

List是有序集合,元素可重复;Map是键值对集合,无序,键唯一。

2. 项目过程中用list多还是map多,哪些场景

太紧张竟然一下子想不太起来了,就随便扯了扯。

List适合有序需求,Map适用键值对存储,根据需求选择。

3. Java有哪些锁

只记得synchronized和ReentrantLock,就说了说这两个以及有啥区别

synchronized和ReentrantLock是Java锁机制的两种实现。

4. synchronized三种锁的状态(忘了)

锁的状态有偏向锁、轻量级锁、重量级锁。

5. synchronized可以修饰在哪些地方

synchronized可以修饰方法和代码块。

6. 说说CAS的原理

CAS(Compare and Swap)是一种无锁算法,通过比较并替换实现。

7. 集群部署时使用synchronized会不会出问题

synchronized本地锁显然不能用在集群里,得用分布式锁

8. 分布式锁有哪些

setnx、Redisson那些东西

9. 多线程有没有了解

只用过线程池

10. 除了线程池还有什么方法启动线程(不会)

可以通过继承Thread类或实现Runnable接口启动线程。

11. 那线程池有哪些核心参数

先说了下原理,然后自然带出了参数,同时说了常用的阻塞队列和拒绝策略以及项目里怎么用的

线程池核心参数有核心线程数、最大线程数、阻塞队列、拒绝策略等。

12. JVM内存分区

答得不好,就记得个堆、方法区和虚拟机栈

13. JVM的回收算法有没有了解

说了标记清除、标记复制、标记清理

14. 监控JVM用什么命令、怎么调优(不会)

监控JVM可以使用jstat、jvisualvm等工具,调优需要根据具体情况分析。

15. 知道full gc吗

Full GC是指对整个堆区进行垃圾回收。

16. 如果JVM发生full gc很多的话可能的原因是什么,怎么排查解决(不会)

Full GC频繁可能是内存泄漏或堆设置不合理,可通过堆栈分析工具定位问题。

17. 对象创建的时候是现在新生代然后经历回收之后再去老年代吗

对象初始在新生代,经过垃圾回收后可能晋升到老年代。

18. 如果对象创建的时候大小大于新生代剩余大小怎么办

答了大对象会直接创建在老年代,但是面试官提醒其实是会先对新生代进行minor gc。

19. MySQL索引数据结构是啥,B+树和B树的区别

MySQL索引使用B+树结构,B+树对范围查找优化。

20. 说说最左匹配原则

最左匹配原则是指联合索引时,查询条件从左到右匹配索引。

21. 还有什么索引失效的原因

说了OR、聚合函数、模糊查询的时候使用%xx、建了联合索引时使用了>、<

22. 还有什么优化sql的方法

就记得个别用子查询,剩下忘了。面试官引导下想起来个覆盖索引

23. 说说回表

回表是指根据索引查找到主键后,再根据主键到表中查找数据。

24. 为了减少回表应该怎么使用sql

用联合索引实现覆盖索引

25. 事务的隔离级别

事务隔离级别有读未提交、读已提交、可重复读和串行化。

26. MySQL默认什么级别、怎么实现的

MySQL默认的隔离级别是可重复读,实现通过MVCC机制。

27. 用transactional注解什么时候会回滚

没太懂啥意思,就说有命令执行出错时会回滚

@Transactional注解在方法抛出RuntimeException时会回滚事务。

28. 如果异常被try catch了没有抛出会回滚吗(不会)

不会,事务回滚需要异常抛出到事务管理器。

29. 还有什么情况会造成事务注解失效

只记得一个aop失效的场景,类内部方法a调用方法b,方法b注解失效。要想生效必须获得代理类使用代理类调用。

30. 除了这个还有吗(不会了)

31. 刚刚说到了动态代理,Java实现动态代理有哪些方式(不会)

Java实现动态代理有JDK动态代理和CGLIB动态代理。

32. Spring用了啥设计模式

听错了,听成了问我了解啥设计模式

33. 了解过Spring源码

没有,但看过博客(怕说有被拷打)

34. 那说说ioc是什么概念

IoC(Inversion of Control)是一种控制反转的设计模式。

35. 什么场景用Redis

缓存、分布式锁、限流

36. 数据库缓存一致性怎么解决

说了先写数据库再删缓存、缓存双删、通过监控binlog

37. 项目怎么部署的

没部署过,就在idea里跑跑

38. 又问到怎么注册服务这些(nacos)

39. 各个服务怎么通信的

40. 自己测过抢票、秒杀的情况吗,怎么防超卖的

先用生成10w个token,然后用jmeter模拟同时抢票或者秒杀。

12306没怎么测过,怕她继续延伸,所以就自己说了下12306怎么解决超卖的问题,她也没打断我

41. 通过RocketMQ延迟消息实现延迟关闭订单怎么做的

就说了延迟消息特性

42. 消费的时候比较慢导致超过了十分钟怎么办

雀食可能存在这个问题,那你要问我怎么解决我只能说不会了,于是扯了扯其他的东西

43. 除了RocketMQ还有什么方法能做到

简单说了说xxl-job、redis过期监听、RabbitMQ、kafka以及缺点

44. 算法:最长递增子数组长度

最长递增子数组可以通过动态规划求解。定义一个数组dp,其中dp[i]表示以第i个元素结尾的最长递增子数组的长度。具体代码可以查看力扣原题300:最长递增子序列

面试总结:

刚过完考试周八股都忘得差不多了,第一次面试,拷打1小时八股。面试官人挺好的,每次答完会给反馈,我延伸也不会打断我。答出来80%(jvm调优这种根本没想到实习会问),算法也a了。

面完之后两个工作日挂,后面再投其他的岗位直接简历挂,说好的ks无限复活呢?

你可能感兴趣的:(java)