比心Java一二三面 offer
一面
- 自我介绍
- 介绍下你理解的DDD
- DDD中防腐层有什么用,他是防止哪里的代码腐烂
- MySQL的索引为什么要用b+ tree,有什么好处
- MySQL的字段为什么要限制长度,如果不限制会怎么样
- 产生四锁的条件是什么,怎么打破?(嘿嘿,之前手撕过四种方式打破死锁)
- Java并发编程你怎么理解,什么时候会出现并发问题
- synchronized和ReentrantLock的区别
- 他们分别怎么用一把锁锁住全局(这个问题没懂,没答出来)
- 再来个系统设计题:我们要给用户发短信链接,因为短信是按字符收费,所以我们要让链接尽可能短,现在要你设计一个接口,给你一个很长的链接,返回一个短链接(固定的域名什么的不算,要求后面固定长度为6的字符),我们系统会高并发调用这个接口,入参长链接返回短链接,你会怎么设计。(我秒答hash映射?)
- 他说不行6位数这么短可能会冲突,怎么办?(我说:那用时间戳?)
- 他也说不行,就6位海量数据轮转回来,可能也会重复(想了快1分钟,直接用id生成器生成不重复的,自增什么的都可以,id是包含英文和数字这样可以多点,提前生产好到缓存,然后请求来就取一个,用redis的key和value把长和短的映射,再起个task去落盘,可以采取那种类似滑动窗口的概念用的多少就生成多少,或者每次用了就从缓存删掉,有个task专门去生成id)
-----反问-----
- 我有什么要提高的(他说我答的挺好,这个系统设计题思路没问题,他说面了这么多,没几个应届生答上来,总体没有什么短板,挺好的)
- 一共几面(2技术、1HR)
总结:(系统设计好像满足:能抗住高并发、输入一个长字符串转化为一个短的字符、长字符串映射成短的然后返回,后面用这个长字符串都返这个短的就行,实现方法应该很多感觉)感觉不是很难,希望二面能上点强度,约的下周三 二面
二面
面试官很专业,先介绍了一下面试的部门的情况,比心的基础架构部门,主要是写一些给全公司用的基础通用组件的开发,介绍了整个面试的流程,然后接下来场景也问了一些基础主键设计相关的题
- 自我介绍
- 实习中遇到的困难和有挑战的点
- 发布评论可能要发文字,我们要做一个风控系统,来过滤一些涉黄等一些铭感词汇,我们有个词库(大概几万个铭感词汇),用户输入的评论会经过我们的系统识别出哪些短语命中了词库,我们怎么做到时间复杂度和空间复杂度尽可能低一点,而且怎么让系统稳定性更好。
- 我们有个表,其中有一列记录用户的手机号,我怎么设计sql实现查询出每个手机号在表里出现的次数。
- 对很多接口做统一的鉴权和校验应该怎么做更优雅一点
- spring的过滤器和拦截器有什么区别
-----反问-----
- 有什么要提升的
- 有机会转正吗
- 刚刚的风控组件有没有什么建议或者思路?(他说作为基础组件,要考虑到稳定性,我用了redis和es去实现,引入外部组件会导致稳定性降低,要尽可能的自己实现分词、过滤敏感词等,稳定性方面没有考虑到)
总结:这场给拷打了,没有答的好的题目感觉,可能是一面面评太好给捞起来了,呜呜呜呜卧槽太菜了。
HR面
她做了自我介绍,介绍了公司的情况租房和薪资等,最后没什么问题就直接offer了。
#java面经##实习面经##软件开发2023笔面经##找实习多的是你不知道的事#