小米安卓开发一二面面经

小米安卓开发一二面面经

前情提要:

我在八月初的时候还在纠结要不要考研,然后试探性的投了两份简历,一份是字节,一份是小米,都是内推的安卓开发岗。

字节第二天电话通知第三天面试,由于效率太高导致我毫无准备,直接GG,不谈。

小米则一直没有消息,导致我以为简历没过,于是开始了紧张的考研复习。过了大约一个月(9月5号),小米发了邮件通知 9月7号 笔试。当时已一个月没碰过代码,两个月没写过安卓。由于下定决心考研,所以没怎么准备,抱着积累经验的态度去混了一下笔试。我自认为笔试题做的不是很好,可没想到在 9月18日 收到了一面的电话通知。
(于是就开始了我的裸面历程)


一面(一小时):

  • 手撕项目,对着简历上写的项目一点点撕,问的非常非常细,非常难。由于我简历上写的是数据库和安卓开发的课设,都是视频平台。于是问了一些关于流媒体,关于数据表,关于处理并发的一些问题。

  • 数据库中索引的b+树和b树还有红黑树有哪些区别和优劣。

  • Java并发编程实现安全的三种方法和区别。

  • Volatile关键字的作用,能不能实现原子性。

  • Java的泛型和反射。

  • MVC、MVP、MVVM的区别。

  • 设计模式?简单工厂模式和工厂模式的区别?

  • C语言static的原理,全局变量前面加上static后会发生什么。

  • 安卓 View和Fragment 的生命周期。

  • 两个不同的tab,怎么写Recyclerview。

  • Http报文格式,get、post等方法的用途和区别。

  • HttpClient,OKHttp,和网上谷歌等一些开源框架的区别。

  • 算法题:判断链表中是否有环,有则返回入口,无则返回null。

一面答得不怎么样,觉得自己应该是凉了,没想到第二天就收到了通知二面的电话。


二面(30分钟):

  • Java Volatile关键字的作用,能实现什么性,不能实现什么性。

  • 活动的生命周期。假设活动A要被一个新活动B替代,发生了哪些生命周期。此时活动B又被活动A替代呢?

  • Hashmap的底层实现,hashcode的equal()和“==”的区别。

  • hashcode会不会重复,一样的hashcode对应的对象是否一样,哈希冲突是什么。

  • 单例模式的几种写法。

  • HttpClient,OKHttp,和网上谷歌等一些开源框架的区别。(此处和一面重复,面试官人很好,向我解释了为什么问这个问题,和我的项目有关)

  • 有上过安卓开发的课吗?老师都教些什么?(答曰:《第一行代码》)

  • 你有什么想问我的?(我询问了他的部门以及我的表现咋样。他是做小米相机的,他觉得我表现一般,不像那些面试题倒背如流的。(我说我在考研毫无准备过来面试的QAQ天啦撸,我回答问题真的是全靠回忆大二大三学的课程知识!))

  • 学院保研情况怎么样?(答曰:…… )


感想:小米的面试官真的超好超亲切!体验极好!下次还来!

2020/11/20更新

已收到offer,但是我已经下定决心离开北京,故拒绝。

发表评论