杭州某国企 Java 面经
杭州某国企 Java 面经
面试官:这边收到你的xxx简历,现在方便做一个简单的面试沟通吗?
我:方便的方便的,内心OS:面经+1。
1)
面试官:先做个自我介绍吧
我:常规操作,比八股背的熟多了,主要突出我全栈的一个学习过程,并且做了一个开源项目,我这边给大家的建议,尤其是双非同学,如果没啥亮点的话,个人博客和喜欢写一些笔记,画一些思维导图,喜欢看技术书籍,是比较好的亮点,如果不是电话面,可以直接给面试官共享屏幕,或者让他访问你的博客,这是一个很大的加分项,92 的同学直接学历碾压了,本身学历就是亮点,所以可能没有什么产出的话,问题也不是很大,千万别说自己的缺点...
2)
面试官:把你的项目给我简单介绍一下
我:阿巴阿巴,介绍项目的主要两个亮点功能,从需求分析、技术选型、业务实现,一步步讲下来,在重点和难点的时候再多加以阐述即可。
3)
面试官:你的数据是存在哪里的?
我:MySQL 数据库,面试官追问查询优化方面,我主要阐述了慢查询日志的使用,和利用索引覆盖的特性,加快查询速度,这块结合具体的业务场景去讲就好了,可以把 Jemter 的参数跑出来会更可信。
4)
面试官:所有的情况都可以用索引覆盖吗?
我:no,只有 Where、Group By、Join 这些后面的字段如果没有加索引,才能够利用索引覆盖,而且索引并不是加的越多越好,阐述下索引在变动过程中需要维护,这部分时间也需要进行考虑。
5)
面试官:缓存你用过哪些?
我:我的项目主要是用了 Redis,然后面试官追问 Redis 的数据结构底层原理,比如字符串的 SDS,对比原有 C 语言字符串的好处,比如 O(1) 获取长度,不会缓冲区溢出,二进制安全,减少修改字符串的内存重新分配次数(惰性空间释放,空间预分配)
6)
面试官:缓存过期策略了解吗?
我:惰性删除机制在取出 key 时进行过期检查,对 CPU 友好,定期删除机制会每隔一段时间抽取一批 key 执行删除过期 key 操作,对内存更加友好, Redis 采用的是定期删除+惰性删除,此外利用内存淘汰机制进行兜底,数据淘汰策略在 Redis 4 版本以前有 6 种,4 以后新增了两种 LFU 的算法。
7)
面试官:你用过哪些设计模式?
我:阿巴阿巴,主要包括门面模式(外观)、适配器模式、注册器模式、模版方法模式、策略模式等等,结合业务代码区讲就好了。
8)
面试官:你觉得什么时候需要用到单例模式?
我:频繁实例化被销毁,频繁 new 对象,保证全局只有一个对象实例,创建对象耗时过多或者耗费资源过多,经常使用该对象,频发访问 IO 的对象,比如数据库连接池,SpringBean 的单例注册表也是有一个缓存池。
9)
面试官:解释下线程安全和不安全
我:阿巴,多线程竞争一个共享资源,这边可以介绍下临界区等,操作系统的知识,还可以介绍下死锁等等,可以结合具体的超卖问题。
10)
主要问了下能多久到岗,实习多久等等,我反问了工作时间和待遇,然后直接拒了,实习生还要加班,而且待遇太低了,直接面经+1。
开源 AI 项目 Gitee 地址:https://gitee.com/falle22222n-leaves
欢迎老铁们 Star 下!累计总后端 800 + Star ,最近会在编程导航星球发布项目的完整文档,包括项目介绍、功能特性、运行方式、部署方式、技术选型、架构设计、核心设计以及学完项目你能得到什么。准备春招和暑期实习的小伙伴可以加入编程导航星球查看完整的项目文档和面经,持续关注面试鸭公众号和编程导航星球,一起努力拿 offer !