2024实习记录:德胧集团日常实习面试
八股实在背的太差,所以回答情况也很糟糕,不过都是比较基础的八股,怪我自己没好好准备,这里对问题和答案进行整理
1.项目部署到阿里云上,可以看一下吗?
过期了,只是为了体验部署服务器的过程。
2.HashMap在JDK1.7和1.8的区别有什么?
首先是结构的不同,在1.7中,hashmap是由数组和链表构成,1.8是由数组,链表,红黑树构成。
第二个体现在put()过程的不同,在put的时候,1.7中采用的是头插法,1.8采用的是尾插法;另外是扩容的不同,1.7的时候,只要key寻址的位置上为空,不管元素个数有没有超过阈值,都直接插入当前的位置上,而1.8中,只要超过了阈值,无论有没有元素,都会进行扩容;另外1.8中,只要插入当前位置的链表元素个数超过8,并且数组的容量大于等于64,就会将链表转换成红黑树。
3.对1.8还是1.7的比较熟悉,讲一下插入的过程?
两者的插入过程有相同点和不同点
相同的点:a.首先获得key的hashcode,然后二次哈希,得到地址,b.如果地址上为空,就直接插入,如果不为空,是链表就按照链表的逻辑插入,是红黑树就按照红黑树的逻辑进行插入,在这个过程中会先对比hashcode(),如果不同直接插入,如果相同就再对比equals(),如果相同就覆盖旧的值,如果不同就直接插入,c.之后会判断是否进行扩容,然后对节点进行再迁移
不同的点:a.1.7采用头插法,1.8采用的是尾插法;b.扩容的时候,1.7的时候,只要key寻址的位置上为空,不管元素个数有没有超过阈值,都直接插入当前的位置上,而1.8中,只要超过了阈值,无论有没有元素,都会进行扩容,c.插入当前位置的链表元素个数超过8,并且数组的容量大于等于64,就会将链表转换成红黑树。
4.算法题,直接共享屏幕打开leetcode去做题,打开了五道,因为平时有刷题的习惯,前四道的提交时间都是近期的,所以换了四道题,最后选了leetcode22.括号生成,刚好好久没复习回溯的题,所以没a出来
5.对哪块内容比较熟悉
答redis
6.redis有哪几种基础数据结构
7.set的底层是怎么实现的?
学过又忘记了,这部分需要重新复习
8.了解cluster集群吗,讲一讲怎么分片?
a.cluster主要是解决主从机制中存在的高并发写问题,横向扩充主数据库,可以提高海量数据的存储和高并发写的问题,b.分片集群有多个master,每个master保存不同数据,一个master可以有多个slave节点,master之间通过ping监考彼此的健康状态,客户端可以请求访问集群的任意一个节点,最终会被转发到正确的节点,c.会把每一个master映射到到16384个插槽上,key不是和节点绑定的,而是和插槽绑定,redis会根据key的有效部分计算插槽值
9.为什么是16384个哈希槽?
10.为什么要有哈希槽?
这次面试回答的一塌糊涂,主要还是知识掌握的不够牢固,后续还得继续夯实知识点才行
#我的实习求职记录#