转载声明:文章来源https://www.nowcoder.com/discuss/949506
面试背景
远程面试,时间:2022.05.26,约55min。
面试流程
1.提问环节(约50min)
候选人自我介绍和面试官询问过往经历。(约8min)
手撕代码。(约15min)
①问题:给定两个有序数组(假设为升序),写一个函数寻找两个数组中的重复元素并测试。(解题思路:双指针。)
②扩展1:两个数组中可能存在多个同样的重复元素(如:[1, 3, 3, 5]和[2, 3, 3, 7]),改进函数使每一个重复元素只输出一次。(解题思路:利用HashSet。)
③扩展2:在扩展1的基础上,不允许用集合类(HashSet,List等),只能用数组,再次改进函数。(解题思路:利用有序性判断元素是否已经添加过。)
讲一下常用的排序算法?(答:十大排序八股文,太长,重点介绍了冒泡、插入、选择、快排和堆排序。)
HashMap的底层实现原理?(答:分JDK1.7和JDK1.8论述。)
HashMap是否线程安全?如果不是,ConcurrentHashMap是怎么实现线程安全的?(答:分JDK1.7和JDK1.8论述。)
synchronized关键字和lock的区别?
Java中有哪几种线程池,默认的是什么?(答:提到ThreadPoolExcutor和Executors,但没理解问题的意思,答成了ThreadPoolExcutor的介绍。)
spring循环依赖及解决方式?(答:此题不会。)
讲一下MySQL索引的使用?
讲一下单列索引和联合索引的区别?(答:这道题令人无奈,一直没听明白面试官问的什么,直到复盘听了好几遍录音才听出来。面试时还以为问的是B+树索引和哈希索引的区别,沟通几遍后这道题跳过了。)
讲一下左连接和右连接的区别?
Redis有几种数据结构?
讲一下StringBuffer和StringBuilder的区别?
讲一下ArrayList和LinkedList的区别?(答:额外扩展论述了ArrayList的扩容机制)
2.反问环节(约5min)
面试官是什么部门的?公司现在主要做什么业务?(回答:武汉分部,主要做美国房地产业务。)
日常工作中使用的技术栈?(回答:SpringBoot + MySQL + Redis + Git + IDEA + 与数据库相关的常用工具。)
面试评价?(未进行明确评价,问题带过。)
实习时间要求?实习生培养计划?面试结果多长时间有反馈?(回答:无实习时间要求,公司内部有一套专门的实习生培养流程,面试结果一周左右给出反馈。)
3.感受与总结
互相没有开摄像头的一场面试,预约的时间是半小时,最后超时差不多一倍,有点意外。虽然因为口音和扬声器质量问题,有些题理解得不太好,但总体来说面试不算难,都是常规八股,对个人来说算是一次很有益的锻炼。后续除了八股文继续查漏补缺外,言语组织和表达能力也需要锻炼加强,尤其是在过往经历的描述方面。
整个看下来还是感觉迷迷糊糊的