项目
- 短链接项目主要做了什么?就是解决了一个怎样的问题?——长链变短链,监控
- 用户信息分表怎么做的?——学习使用 ShardingSphere 中间件
问完计网又跳回来问项目,黑马点评
- 描述一下项目难点?——秒杀
- Redis 缓存做什么用的,存什么数据——商铺信息
- 那你秒杀超卖问题是纯用 MySQL 吗?——讲了秒杀异步处理流程,拆判断资格 Redis 处理,生成订单扣库存具体操作异步 MySQL 处理
- 考虑过数据库性能问题吗?可能会瞬时流量特别大的情况,怎么解决?——应该是答限流方法,当时没想到。答加锁来防止崩溃(当然性能就 g 了),不太满意。
- “你觉得还有优化空间吗?”——没想到了。“可以结合上 Redis,就是说可能在真实的业务里它是一个多级的,并不会就是说比如说有 1 万个请求数,1 万个用户同时请求 1 万个请求,马上就到达 Redis。它可能是一个多级的,就是在前一级它可能就还有个 Redis,然后你很多用户,你先把 Redis 里面的那个令牌拿到之后,才你才有资格去访问这个 MySQL。因为 MySQL 的性能确实相对低。“面试官讲完才发现是说的限流问题,好像意思就是令牌桶算法?
- 异步秒杀下单怎么做的?——上面大致讲过了,然后又讲一遍添加些细节,哦了
八股
OS
- 进程线程区别?——老生常谈,但好久没看了,零散答一通
- Linux 查看当前进程、线程用什么命令——top,然后没想起来了;提醒了 ps
- 那 ps 命令里面的 pid 是进程还是线程?——因为p 所以觉得是 Process 进程。“Linux 内核和 Linux 不同的系统调用含义不太一样,有兴趣了了解一下”
Java
- 堆空间和栈空间区别?——堆对象,栈方法
- 类比到进程和线程,能不能共享堆资源或栈资源?——进程共享堆,线程私有栈
- native 关键字用途?——Java 调本地 C/CPP 方法
- 双亲委派机制用处?——讲了一下概念,举了 String 例子说好处是安全性
- 类加载过程是单线程还是多线程?——应该是多线程。“嗯,里面会有些并发问题,算了我问的有点深了……Java 这块我觉得你基础还可以”
Redis
计网
- DNS 用的传输层的哪个协议?——计网没复习,寄
- 在浏览器中输入一个 URL 地址,底层发生了什么事情,就可以针对网络的每一层来说——小林原题,太久没看没背,又慌又后悔,哎!看我愣有点久于是开始引导:
- 输入URL 是想访问地址,怎么把 URL 变成计算机访问的地址?——DNS,转 IP 地址
- 拿到 IP 地址后以什么方式请求服务器?——没听懂,懵。
- 就是 HTTP,HTTP 用的 TCP 还是 UDP?——TCP
- HTTP 是有状态的还是无状态的——无状态。“为什么设计成无状态?”——保存状态服务器有性能开销
问完计网跳回去问黑马点评项目
问完八股+项目 23 min
“那做道题吧,基础知识方面还可以”——哎,以为稳了,结果算法翻车,痛!太痛了!
算法
LC 103 二叉树的锯齿形层序遍历——面经经常看到二叉树层序遍历,所以写到层序遍历 2 分钟左右秒了;然后每次秒完提交界面推荐相关题目就是这道锯齿形,然而每次都懒得做,这下埋雷引爆了。
以为自己挺熟层序了,然后想了想感觉是用双端队列,调整入队顺序可能就能解决。结果捣鼓半天写代码写着写着就发现和自己预期不太一样了,慌了,开始调整,咋调不得劲,已经有了错误的思维和代码框架,在此之上进行调整越调心越乱越慌。越想做出来越紧张越做不出来,太难受了。面试官也提醒了一句,说我代码已经调整了出队顺序,就不要调整不一样的入队顺序,两个改一个就行,我脑子当时太乱了,听出来了也对代码改动有点懵,最后含恨放弃,难受。
后记:尘埃落定,错付小米,因为这道锯齿层序。0429 才捡起这道题,又按着老思路做,做不出来,绕里面了。突然一想,只需要输出反向,那直接把 list 隔层 reverse 不就完了。于是写了一下层序加了几行隔一行 reverse 的逻辑,秒了。。。我恨啊!不过这有点点取巧,遍历顺序实际没变只是改了输出。于是乎看了眼官方题解,也是取巧,只不过是隔层添加 list 顺序改变一下,遍历的顺序还是没变,其实也不太符合的感觉,但完全能达到面试要求了,很简单,哎。
再后记:0509 整理面经,又研究了一下,这下算是真正会了锯齿遍历,之前只是改输出结果。思路其实和我面试想的差不多,只不过我把入队和打印出队有点混在一起了,导致越写越乱。思路的话,如果第一层正常入队(offerLast),正常出队(pollFirst),那么孩子也是正常左右入队(offerLast),队伍就是正常顺序;第二层要反向了,所以反向出队(pollLast),入队也得右左并且加在队头(offerFirst),这样不影响出队,同时头部入队所以顺序又正回来了,下一层再正常入队,循环即可。中间记得判断队列为空了及时 break 就行,不难,有点小绕而已,后悔捏!心痛捏!面试官提醒也挺详细的,就是现场脑子又着急又乱,没能听明白理清楚,呜。
+37 min,到算法没写出来结束整1h
其它
- 开放性问题,你觉得大模型未来会有哪些应用?或者说现在出现的哪些应用你觉得未来发展前景比较大?大- 模型能被用在什么地方?比如 Copilot 写代码,GPT 提取文章摘要之类的细化应用,生活中还有哪些地方能够应用大模型提高效率?——答得一般,思路局限住了,想到了最近挺火的视频相关的 Sora,音乐相关的忘了叫什么,一时间真没想出来什么新应用场景。后来无意中想到几乎各行各业都可以结合,体育、金融、医疗、教育等等,点太多了其实,后知后觉了……
- 反问
- 建议:写代码之前打草稿,抓住核心问题,考虑好核心问题怎么解决后再写;用例拟好,有问题模拟定位到问题去解决(全是针对算法没写出来的建议,建议挺好的,确实我欠缺这些。不过估计就是写不出来说明算法功底不行,加上 debug 也 de 不出来加提醒也没写出来,更体现解决问题能力不行,直接 gg 了)
总结
2024-04-24
算法,痛,要好好沉淀算法!希望以后不要再因为算法留遗憾!(然后 0508 hw 笔试都没过,难蚌,再痛一次)
可惜了,暑期实习米到二面了,以为有机会,结果还是没能抓住。面完等两天没动静,等不及问一面面试官,告诉我二面面评写的算法不太行,建议我投别家,哎,gg,遗憾。
时也命也,同志仍需努力!面完当天下午接到竞技世界约面,一心想等小米但还是接了,结果随便一面就是最后去处了哈哈哈!后面整理发布 jj 的面经
牛友们觉得有用的话,收藏同时顺便点点赞呗~谢谢!
#软件开发2024笔面经##小米#