一次快手Java面试社招(二面凉)一面1、先自我介绍2、非计算机科班,怎么学的?3、排序算法懂吗?4、说一下快排、归并、堆排序的时间复杂度以及空间复杂度;5、算法:写一下堆排序,一个超大的数组,需要找出前K大,手写一下;6、算法:一个有序数组,有重复的数字,给定一个目标值,找出目标数字第一次出现的位置;7、AQS了解吗?介绍一下原理。怎么实现公平锁,非公平锁呢?8、HashMap在1.7和1.8中的区别是啥?链表环是怎么形成的?9、HashMap怎么实现线程安全的?说一下1.7和1.8的区别?10、介绍一下项目,用了什么技术?遇到的难题是啥?怎么解决的?11、反问环节二面(凉)1、先自我介绍2、你这个专业不是相关专业吧,怎么想的?(是相关专业,不过偏硬件方面)3、介绍下项目4、算法:n阶台阶,可以走a步,也可以走b步,打印所有可能的走法。n=11,a=3,b=5 输出 335 353 533(没有搞出来),然后说搞不出来 那就打印一下一共有多少种走法也可以(也没搞出来 😣)5、算法:给一个字符数组,有两个连续空格的话,需要去空格,将空格放到数组最后,不允许用额外空间;(用冒泡整了一下)问:是否还有优化,答:无6、工作中做了哪些优化和改进?7、线程池怎么用的?核心线程数设置了多少?任务队列设置了多少?8、RDB是怎么做的,AOF是怎么做的9、反问环节。快手过了的话当天会给打电话约下一次面试,否则第二天上午会接到感谢信!