杭州安恒信息面经
岗位:软件开发实习生(恒星计划) base:杭州
时间:2024.11.28
我的基本情况:本人大三,软件工程专业,Java 后端方向,前端也会一点Vue。
目前的技术栈:Java SE、SSM、SpringBoot 、RabbitMQ、Redis、MySQL(微服务那套跟着鱼皮的oj过了一遍)
这是我人生中第一次线上面试,自我介绍的时候都有一些卡顿,实在是太紧张了。(ps:当时找安静的教室准备面试,选择下午没课的机房,和面试官面到一半突然来人变得很吵,后面没面多久就结束真的无语😅)
回归到面试中:
面试官:先进行自我介绍一下
我:我叫xxxxx,来自xxxxx,是xxxxx专业大三的一名学生.......(然后就介绍了一下技术栈和简历上的项目)。
面试官:重写equals方法不重写hashCode方法会出现什么问题?
我:如果判断两个数如果hashCode相同则equals不一定相同,反而equals相同则hashCode则一定相同。如果不重写equals方法比较的是2个对象的内存地址,重写了equals方法比较的才是2个对象的值.....(如果我们不将我们重写equals方法的类放到HashSet等散列表中时则不会有什么影响,但如果放到我们的散列表中时我们的散列表则会优先比较HashCode所以可能会产生错误)ps:括号中的是我面试结束后去查的。
参考面试鸭:https://www.mianshiya.com/bank/1787463103423897602/question/1780933294574039042#heading-0
面试官:了解hashMap吗?介绍hashMap的原理?
我:HashMap是Java中常用的数据结构,用于存储键值对。hashMap的原理分为1.7之前和1.8之后。1.7的时候hashMap的数据结构是数组加链表的方式,在1.8之后加入了红黑树这种数据结构。HashMap的默认初始化容量是16,负载因子是0.75,当存储的元素个数超过12个时,hashMap会触发扩容机制。链表转换成红黑树前会进行判断,链表长度大于8数组长度大于64才会进行转换,如果链表长度大于8但是数组长度小于64也不会转换成红黑树,只会对数组容量进行扩容。1.8以后链表插入从头插法改为尾插法.......
面试官:了解MySQL中的like关键字吗?
我:like是MySQL中的模糊查询关键字,和%配合一起使用,%的位置不同会影响查询记录的不同。%在前:MySQL将会匹配以指定字符串结尾的所有字符串。%在后:MySQL将会匹配以指定字符串开头的所有字符串。%在中间:MySQL将会匹配包含指定字符串的所有字符串。
这道题我好像没有在面试鸭看到
面试官:了解Mybatis框架吗?MyBatis的实现原理?
我:MyBatis是ORM框架......(ps:这道题是真不会,八股没复习过这个,只能硬着头皮编了一下)
参考面试鸭:https://www.mianshiya.com/question/1803351153858568193
面试官:Redis里面有一亿条数据,有十万条的数据,key开头是一样的,如何查找出来?
我:思考了一下给面试官回答不会。(内心:我靠场景题都来了,我这怎么办 流泪啊)
面试结束看面试鸭也没有答案(希望有知道的鱼友能给我解释一下)
面试官:Redisson的限流(限流算法)?
我:我使用的RateLimiter的限流组件,底层使用的令牌桶的限流算法......(我本来还准备介绍一下限流的其他算法但是太紧张了,当时怕讲不好就没有介绍)
参考面试鸭:https://www.mianshiya.com/question/1772196516732121090
面试官:为什么会出现死锁问题?如何解决?
我:死锁是2个线程相互持有对方想要的资源,线程无法执行下去,只能等待或者被外部程序干预。要避免死锁可以减少线程对资源的持有时间,及时的释放资源;一次把线程所需要的资源全部获取到,注意加锁的顺序,保证每个线程按照同样的顺序加锁。
参考面试鸭:https://www.mianshiya.com/question/1772868692149846018
面试官:SpringBoot Bean的作用域?
我:思考了一下给面试官回答不会。复习八股的时候没有复习到这个,只复习到Bean的生命周期
参考面试鸭:https://www.mianshiya.com/question/1780933295354179585
面试官:了解Restful API(介绍一下)?
我:了解的我简历中的第二个项目就是使用Restful 风格调用的Github API;‘Restful API是无状态的,每个请求都包含足够的信息,服务器不需要记录客户端的状态。客户端的每个请求都应该包含所有必要的信息.....
面试官:了解反射吗(介绍一下)?
我:java的反射是程序在运行时获取类的信息,反射可以在运行的时候动态的创建对象、调用方法等功能;一般在业务上不会用到反射框架中使用的比较多Spring就是使用反射来读取配置文件的。(当时内心狂喜,当时收到面试通知的时候就去牛客上找面经,看到好几篇面经都提到了反射专门去看了一下)
参考面试鸭:https://www.mianshiya.com/question/1776518648442130434
后面面试官就没有再问了,就进行的反问。
总结: 八股文复习的还不够每天还是要多抽时间看一下,面试的次数太少导致面试的时候太紧张了要放平心态。
