小米-Java后端-二面凉经

项目

  • 短链接项目主要做了什么?就是解决了一个怎样的问题?——长链变短链,监控
  • 用户信息分表怎么做的?——学习使用 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笔面经##小米#
Kiro面经 文章被收录于专栏

Java后端,自己的面经整理总结

全部评论
看来黑马点评还是不错的
点赞
送花
回复
分享
发布于 05-11 19:55 辽宁

相关推荐

4.8官网投递的软开岗,泡了一个多月的池子,昨日打电话被安全研发部门捞了--------------------------------------------1.自我介绍2.询问现在什么状态?(找工作还是在实习)3.问项目和实习经历(技术点,解决问题)4.redis,redisson5.解释下关键字static6.java基础数据结构有什么?7.Integer和int的区别?8.如何判断两个字符串是否相等?9.String和StingBuilder,StringBuffer的区别?10.常见的异常有哪些?(写题时,做项目时)11.  解释下异常中的finally12.泛型有了解吗13.常见集合有哪些?14.ArrayList可以添加空值NULL吗?15.ArrayList和LinkedList的区别?16.多线程使用过吗?17.JVM了解吗?(内存模型和垃圾回收机制)18.讲一下多线程的上下文切换?18.jvm有哪些组成部分?栈和堆的区别是什么?19.sleep方法和wait方法?释放锁之后会导致什么情况?20.可以直接调用Thread的run()方法吗?21.并发和并行有什么区别?22.异步和同步的区别?23.悲观锁和乐观锁的区别?具体例子24.MySQL的事物隔离级别25.什么是事物?事物的四大特性ACID26.一个表用A,BC字段做索引,如果查询A和C,索引会失效吗?使用!=会失效吗?那怎么才能命中索引呢?27.唯一索引和联合索引的区别?28.redis基本数据结构29.Redis中Sting类型的key访问时的时间复杂度多少?30.算法选择:快排,二分,归并,插入反问:1.面试结果什么时候出?说的很多简历要面,还不知道什么时候出。2. 安全研发具体什么业务?整个大部门都是安全部门, 做网络安全,设备安全,业务安全,黑客白帽攻防,现在这个组是业务安全,主要包括账户安全,游戏风控,内容风控,售前售后的风控。
点赞 评论 收藏
转发
10 57 评论
分享
牛客网
牛客企业服务