云智研发一面
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;