云智研发一面
10.16 云智研发一面
整个面试过程很符合我对腾讯的刻板印象,技术强,不开摄像头,全程毫无反馈,最后直接结束关闭腾讯会议,没有反问环节。
自我介绍;
手撕代码:输出数组中出现的编号,并且输出出现次数最多的那个编号。
为什么用
HashMap
来做呢?有没有更好的方法来做?空间复杂度更低的。
你用数组下标表示编号确实可以,而且也更快,但是如果编号不是数字,而是字符串呢?
JAVA虚拟机了解吗?你写的这些代码里哪些东西是在堆里?哪些是在栈里?
你写一段堆内存溢出的代码;
那你写一段栈内存溢出的代码;
如果现在一个线程递归调用100次会发生栈内存溢出,那么20个线程每个线程递归调用20次,会发生栈内存溢出吗?
Synchronized
了解吗?如果Synchronized
加在静态同步方法上,锁住的是什么?HashMap
的扩容你了解吗?扩容过程中原数组上的数据具体怎么迁移的呢?ArrayList
的扩容机制呢?跟HashMap
扩容机制有什么区别?你说
ArrayList
的底层是数组,为什么ArrayList
扩容的时候不直接在原数组后面开一块空间呢?用连起来就行?数组在内存中是连续的吗?还是不连续的?
那你知道什么是物理内存和虚拟内存吗?
虚拟内存有什么好处?
JAVA虚拟机操纵的是虚拟内存还是物理内存?
你写的堆内存溢出这段代码会发生垃圾回收吗?哪些东西会被回收?
Redis的淘汰策略了解吗?
如果让你来写LRU,你会怎么来设计?
你提到了
LinkedHashMap
,那你知道LinkedHashMap
的底层是怎么实现的吗?LinkedHashMap
有什么优点呢?为什么要用这个来实现LRU?那你说说
LinkedHashMap
中的get()
方法怎么实现的;了解快排吗?快排的时间复杂度和空间复杂度多少?说说快排为什么能这么快?
堆排序了解吗?如果我要找一个节点的子节点,该怎么做?
现在有一个表,有abcd四个字段,其中abc建立了联合索引,
select a, c from T where a = 'tx' and c = 'csig';
会走索引吗?为什么?select a, c from T where a = 'tx' and c = 'csig'
和select a, d from T where a = 'tx' and d = 'csig';
哪个查询的效率更好?统计表中a字段出现次数最多的元素。
1
2
3
4
5SELECT a, COUNT(a) AS count_a
FROM T
GROUP BY a
ORDER BY count_a DESC
LIMIT 1;