小米广告后端开发实习一面(最燃尽的一集)

面试官人很好,这是我见过最会引导的面试官了
心态崩了,记几个答得不好的,全程1h10min
1、狠狠拷打实习,问有什么难点,如果让你继续优化你的实习工作,你还能做哪些优化。主要是笨人的实习真的挺杂活的, 真想不到有什么难点和可以优化的地方。
2、手撕一个分布事锁工具类,支持加锁和释放锁,要可重入,涉及redis或zk的api可以伪代码,在面试官的循序引导下勉强写完了,但是后来面试官又问如何让一个工具类同时支持redis和zk的加锁和释放锁,写不出来,只说了应该需要工厂模式和spi支持。。。
3、事务是怎么实现的,具体一点,只知道aop,但是还不够具体
4、面试官手写了一个类,问事务生不生效,类似下面这样,记不清了,回答了不生效,问为什么,怎么解决,我说方法A加个@Transactional,面试官继续问,如果不加注解,自己@Autowired注入自己AccountService 可以生效吗?而且这样算循环依赖吗?
public class AccountService {
@Autowired
private Dao accountDao;

@Transactional
public void B {
...
}

public void A {
B()
...
}
5、Redis为什么这么高效?redis单线程模型为什么能高效处理多个请求?
这个事务能生效吗?
6、什么叫循环依赖,如何解决?为什么是三级缓存而不是二级?
7、手撕:二叉树最近公共祖先,继续,如果是二叉搜索树呢?
总结:这次暴露的问题太多了,很多八股只停留在表面,比如@Transactional如何实现事务的,只知道基于 aop,但是 app 干了啥保证事务就不知道了,为什么是三级缓存而不是二级,对于实习没有很好的总结,不知道难点在哪,应该是挂了
全部评论

相关推荐

头像
09-17 15:14
已编辑
小红书_广告投放_后端开发
好的,这是一份根据你提供的对话整理的Java后端开发面试经验(面经),还原了面试流程、技术问答和核心考察点。-----### **小米Java后端实习岗面试经验****面试时间:** 约25分钟**面试形式:** 语音面试-----#### **一、开场与项目经历深挖 (约10分钟)**面试官非常直接,在简单的问好和确认身份后,直接切入简历中的实习经历。**面试官:** 看你最近在XXX实习过,能具体讲讲吗?**我:** (介绍了自己所在的团队和业务)XXX**面试官:** 你在里面具体做了什么事?**我:**实习部分 省略布隆过滤器    缓存穿透    分库分表-----#### **二、Java基础知识考察 (约5分钟)**面试官通过在线聊天窗口打字的方式,开始考察Java基础。**问题1:字符串比较**面试官打出代码:```javaString a = // ... some string initializationif (a == "Hello") {// ... do something}```**面试官:** “这样写代码有问题吗?”**我:*** “有问题,这里应该用`.equals()`方法进行比较,而不是用`==`。”* (尝试解释原因)“`==`对于引用类型,比较的是对象的内存地址。而`.equals()`方法(在String类中被重写后)比较的是字符串的内容是否相同。”* *(自我复盘:当时解释得有点磕巴,一开始把两个的作用说反了,但很快纠正了过来。核心点答对了,但表达不够流畅。)***问题2:浮点数比较**面试官接着打出代码:```javadouble a = 2.0;if (a == 2) {// ... do something}```**面试官:** “这样可以吗?”**我:*** “我觉得这样应该是可以的。”* *(自我复盘:这是一个经典的陷阱题。虽然`2.0 == 2`在Java中会返回`true`,因为整数`2`会被自动类型提升为`double`。但面试官实际想考察的是浮点数精度问题。更严谨的回答应该是:‘对于简单的、可以精确表示的浮点数,这样做没问题。但通常不推荐使用==直接比较两个浮点数,因为计算机存储浮点数存在精度误差,应该使用一个极小的阈值(epsilon)来判断两者之差的绝对值是否足够小。’)*-----#### **三、算法题 (约10分钟)**赎金信 改编版, 在一个数组中找到只存在一次的数。-----#### **总结**这次面试整体节奏较快,问题由浅入深,比较典型。1.  **项目经历是重点:** 面试官非常关注你在实习项目中具体做了什么、遇到了什么问题、如何解决的、以及最终产出了什么价值。能够清晰地表达出项目的\*\*背景(Problem)、方案(Action)、结果(Result)\*\*非常重要。2.  **技术深度:** 对于简历上写的技术点,如“Redis优化”,一定要准备好被深挖,能够讲清楚其原理、实现细节和选型考量。3.  **基础知识需扎实:** Java基础(如`==` vs `equals`,浮点数比较)是必考题,不仅要知其然,还要知其所以然,能清晰准确地表达出来。4.  **算法能力:** 对于经典的算法题,要能迅速给出最优解法,并准确分析其时空复杂度。在沟通思路时,尽量主动、完整地把整个解法流程和优缺点都讲清楚。
查看4道真题和解析
点赞 评论 收藏
分享
评论
3
5
分享

创作者周榜

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