秋招第一面 九机凉经

云南九机(小厂还是中厂也不清楚),目前往上没看到任何面经,本着开源思想,发出2面线下凉经。

总的来说我觉得答的还不错的,80%都相对完美地答出来了,剩下的也都给出了一定的答案,其中一个面试官聊着聊着看着还挺开心的,本来以为稳了在纠结去不去,结果今天收到了感谢信,很奇特的体验。

印象比较深刻的如下(其他都是特别经典的八股,直接答了没什么印象):

面试官1(聊的比较来的):

1.项目中会话记忆value比较大,怎么保证高并发的速度?

用redis主从,主写从读(个人能想到的方法,不是标准答案估计)

2.用过并行lambda表达式吗?

没用过,lambda表达式用的比较多的是在steam流中。(最后发现问的好像就是并行stream流的使用)

3.为什么不用redis事务?

redis事务所谓的同时成功和同时失败,与平常理解的不同,部分成功也不会回滚,当时我幽默地说redis事务就不能叫事务,面试官还会心一笑(我以为稳了的一个原因)。

4.AOP的应用场景。

公共字段填充,日志书写,问我还有没(忘了最基本的事务实现了)

5.如果子线程中的数据都来源于主线程,该怎么设计,才能使得子线程不会修改到其他线程的数据。

当时直接蒙了,从来没有想过,因为自己做项目都是类里存个变量就完事了。 然后想到线程+存储,我就答了个用InheritableThreadLocal重写里面的方法,只把子线程需要的数据给他(后来GPT好像也是说这么做)。

6.顺势问了ThreadLocal的原理:

底层ThreadLocalMap,key为ThreadLocal本身,value是存的值,然后顺口把强引用弱引用和内存泄漏说了下。

面试官2(比较严肃的,问的问题都很怪):

1.首当其冲,一个我觉得很怪的问题:只用数据库怎么保证不重复数据(下单)

平常幂等看八股都是用分布式ID,redis setNX的。我答的唯一性索引,然后面试官还要其他的答案,后来想了半天,说了状态机和加锁。还是不满意,我就没法了。

2.返回空解决缓存穿透,如果攻击很大怎么办,还有什么其他方法解决。

想了半天没想到,说用接口限流,防止单用户或IP恶意调用。 GPT说布隆过滤器,数据预热(提前把不存在数据设置好),网关合法性校验等。

3.如果一个字段只有通过三个条件组合才能查出,用户单个条件查就为空,该怎么解决?

我觉得非常怪的问题,详细问,面试官说:用户查某个商品,但下架了,什么都查不出来,必须有特定状态才能查出。 我说这个在最开始阶段就要设计避免,或者直接单个条件能查出,但是给个已下架灰色不能点击下单即可(参考的各大电商的已下架商品)。 但他跟我说不行,不想让用户看到,我说那就直接弹一个商品已下架的界面,还是说不对。直到现在我也没弄懂他要问什么。

4.索引不命中的情况。

不满足最左匹配的组合索引,%在左边,索引列有函数导致顺序变化,or条件两边一个命中另一个不命中。

5.or不命中怎么解决?

分开查(只说了分开,忘了说再union),专门建立覆盖索引(面试官说不行,我不知道是不是实际开发不这么做,但对于频繁查询的最好优化不就是覆盖索引吗),然后还乱说了一个子查询先查命中的再查不命中的。

6.应该是产品思维的什么题:怎么确保客户体验什么的记不清了。

我说客户最关注的应该是前端,界面好看+动画反馈+接口响应速度快

总结

单2硕秋招的第一个技术面,还是个线下的中小厂,被挂了真不是滋味。第一个面试官明明聊的挺开心的,但第二个面试官我不知道是不是实际在开发的,问的问题我真的感觉很怪,如果大火有什么头绪可以跟我说说,我再复盘复盘。

#发面经攒人品#
全部评论

相关推荐

11-07 15:41
暨南大学 C++
用微笑面对困难:我面试时候,就说了句”不愧是徐波的兵“他就破房了说是
点赞 评论 收藏
分享
点赞 评论 收藏
分享
用微笑面对困难:你出于礼貌叫了人一声大姐,大姐很欣慰,她真把你当老弟
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务