字节跳动暑期实习后端二面面经(已过)
2022年3月7日18:33:19 全程都是项目 + 场景,没八股,写完就是写算法留了很长时间,感觉内容不多(写着写着发现不对劲,问了好多),感觉自己准备的还是不够到位。凉经预警qwq (面试完写面经,半小时不到写着写着就过了)[字节跳动暑期实习后端一面面经](https://www.nowcoder.com/discuss/852109)
[字节跳动暑期实习后端二面面经](https://www.nowcoder.com/discuss/856328)
[字节跳动暑期实习后端三面面经](https://www.nowcoder.com/discuss/857138)
【============项目分割线============】
- 你是来实习是吧?课程怎么办?我是找暑期实习
- 哦哦,那讲讲你对spring和springboot的理解?
- springboot是怎么加载redis的,为什么比不用springboot更方便呢?
- 加载的redis或者bean是单例还是多例?默认单例
- springboot是怎么实现单例模式的呢?map
- 单例模式线程安全吗?本身不具备安全特性
- 怎么保证多线程下面单例模式安全?双重校验锁 + volatile(但我理解错了说的concurrentmap可以保证线程安全)
- 那你刚刚说到的concurrentMap和hashmap有什么区别?面试官就顺着我错的讲的来,面完才get到点
- 线程安全是什么概念?没去思考过,按照想法和可能发生的问题理了一下
- hashmap为什么多线程不安全,能举出例子来吗?多线程插入resize过程死循环(但我这里答的不够精炼)
- 怎么保证线程安全?(锁)
- volatile和synchronize有什么区别?或者功能?讲得有点杂乱了,开始
- 那回到刚刚的问题他们怎么保证线程安全?面试官及时把我拉了回来
- 举个例子i++,分别说说。i++不是原子操作,涉及多个操作,需要保证他原子性才能安全
- volatile能保证i++安全吗?不行,单线程可以,多线程还是会覆盖(我当时咋忘了说全了呢)
- ------spring结束------
- 那看你简历写了设计模式,你能说说设计模式吗?讲自学的,软工课上学的,巴拉巴拉
- 为什么设计模式更好,你能说说用和不用的区别吗?代码更优美,更规范、更高级,讲得很抽象,面试官就打断继续和我`拉扯`
- 也说不上高级,那你举个例子讲讲设计模式的好说的策略模式,但感觉没说到点
- 好,那讲讲几种常见的设计模式。工厂、观察者、建造者,桥接、单例、策略..然后方便简单讲了讲在spring里面的体现
- 那讲讲微服务吧。(毕竟我简历上写了了解)我说我学了但没怎么用,讲了下单体服务到微服务的过度和区别
- 微服务两台机器怎么通信呢?单节点HTTP、微服务PRC
- 那两台机器如何用HTTP怎么找到对方?域名dns解析ip;如果不知道域名呢?不懂了0.0
- 那微服务都有什么部分呢 注册中心、网关、xxx
- 注册中心是什么讲讲?中心化思想,巴拉巴拉
- 网关是什么呢?别说了别说了.jpg, 其实就说了下思想,然后直接说我这块之前学的现在有点记不住了
- 好那既然有分布式,你能说说分布式登录怎么保持状态吗?讲了下登录怎么保存状态,然后讲了下分布式session、redis存、JWT
- 讲讲JWT。
- 那我现在提个需求,假设用户登录了,我想封他id,怎么操作,在java程序哪操作?可以用户数据库+status状态、登录时判断、拦截器请求时判断、redis维护黑名单。
- 讲讲如果让你项目去实现禁ID(T人),你怎么做? 这个我熟,感谢sa-token作者的博客,给我安排的明明白白
- 如果不用redis呢?java内存维护set如果黑名单少的话,或者每次请求就搜库
- 那讲讲set集合?八股ing
- 怎么设计限制用户单位时间访问次数? 直接redis 设置带时间的key统计访问次数,面试官说请求是分开来的。用zset统计用户访问时间戳,java程序每次往前读取zset一段时间戳统计访问次数是否大于限制,大于就加入黑名单
【============算法分割线============】
https://leetcode-cn.com/problems/number-of-dice-rolls-with-target-sum/
d个骰子可以,每个骰子可以投f个面(1-f分),构成targe有多少种情况,结果对1e9 +7除余
我一开始是dp写,但感觉时间不够我去推,我就拿dfs暴力写了一个,结果面试官说时间还有,继续优化
- dfs暴力搜索 ==> 相当于 d个for循环 时间复杂度 O(d^f)不行,继续优化,我试探的问了下是继续dfs优化还是换算法,他隐藏提醒换算法,只能硬肝dp了
- dp[i][j] 第i个筛子可以凑成j种分数,dp[i][j] += dp[i][j-f] (f从1-f循环)每次从上一层状态凑 过了qwq
【============反问分割线============】
- 这次没八股文,都是实战场景,想问问我回答情况怎样?能不能给一点建议。 不想要统一的答案,想要解决问题的过程
- 部门是Java还是Go?·Go
结束,面完还在自闭回想(见第一行最后),我一般不录音,都是面完按照面试官思路去把面经整理出来,同时方便自己复盘感受感受面试官提问逻辑
突然HR来消息问我面的怎么样上一次也问了,等了一天才出结果。我说连环炮提问太刺激了qwq,然后他说结果出了,问我想平静会晚上听还是现在。
那还能等?直接开奖~~~~过了。。约了第二天三面,最后几段路了,冲!
面试经验分享 文章被收录于专栏
估计不会更新了