百度Android日常实习timeline(已offer)
10.10 官网投递简历
10.23 一面(60min)
面试官人非常好,会循循善诱,体验极佳,是我面过最好的一个面试官。
- 自我介绍。
- 介绍一下你简历上写的两个项目。
- 两个项目大概几个人参加,各自有什么负责的工作吗?介绍一下。
- 你在跟后端对接过程中通过什么格式数据对接?约定了一些怎样的接口的请求流程?
- Java中final关键字有什么用途?能在哪些地方使用?
- Kotlin中跟final关键字等价的是什么?
- 介绍一下Java中Object类里面的方法,你有用到过哪些?
- 怎样在多线程访问集合的场景下,能够确保不会出现并发问题呢?
- Activity的启动模式。
- Activity的生命周期。
- Android的视图是怎样绘制,最终展示在屏幕上的?说一下系统在这一块的处理流程。
- Android触摸事件传递。
- 说一下你知道的Android里面进程的通信。
- Handler发送消息具体底层原理说一下。
- 结合Android源码或者一些开源库/经典第三方库的源码,说一下你熟悉的常见的设计模式。
- 介绍一下Retrofit和OkHttp。
- Retrofit用到了注解,你平时还有其他地方用过注解吗?了解过注解的相关机制吗?
- Android最后打包的产物APK里面最终存在了哪些文件?
- 输入一个网址到显示页面中间发生的事情。
- 反问
一面的知识点基本上都答出来了,当时我觉得进二面的几率挺大的,果不其然很快就发了二面邀请。
10.26 二面(45min)
- 自我介绍
- 介绍一下static关键字的作用。
- 追问:你能结合Java的内存结构介绍一下有这个关键字和没有这个关键字的区别吗?
- 介绍一下线程和进程的概念。
- 介绍一下死锁的概念,和它产生的原因。
- 追问:你在日常开发中有遇到过死锁的问题吗?
- 结合这种线程和进程概念,我们在多线程开发的时候,需要考虑哪些事情?
- 追问:sychronized和volatile这两个关键字它的作用上的差异点。
- 介绍一下HTTP和HTTPS的区别
- 介绍一下Android里面Handler的实现原理,以及我们在使用过程中有什么需要注意的吗?
- 介绍一下Android中常见的布局类型
- 追问:不同布局对于整个页面性能的差异。
- 追问:日常项目中的话,你怎么判断要用那种布局呢?你的选择规则或者标准是什么?
- 介绍一下MVVM架构,你是怎么用的?
- 追问:LiveData底层实现原理了解过吗?(答了不了解,于是有了追问b)
- 追问:那如果说让你来设计一个LiveData,你会怎么做呢?
- 算法题:最长不重复子串。
- 反问
面试官迟到了15分钟,原本一小时的面试被压缩成了45min。算法题我一开始还理解错意思了,面试官还问我懂不懂题目意思是什么,我自己以为懂了,其实根本没懂。面试最后几分钟我重新理解了一下题意,正要用对的思路去做的时候,面试官说“没时间了,就到这了吧”。
由于我自认为答的也不怎么好,加上算法题没做出来,当时就已经觉得没下文了。没想到居然约了三面。
10.31 三面(25min)
- 自我介绍
- 你自己评价你自己,最突出的一块技术亮点是什么?
- 为什么你会自己想去学Android这块?
- 你学Android的知识主要通过哪些手段?
- 像自定义View,你目前了解的一般在实践上需要注意哪些东西?
- 你在实际实践过程中,都是Android类的吗?还是也有非Android类的一些软件或项目之类的?
- 在你做的项目这个过程中,你觉得哪个功能实现起来相对来讲最复杂?
- 以你目前看过的源码来讲,你觉得你看到哪个源码是设计上还有代码上让你觉得还挺好的?
面试官面完后说问的问题挺简单的,让我保持电话畅通。当时觉得可能有戏,又觉得可能是客套话。
11.6 oc
11.7 offer
从一面的有点自信,到二面的万念俱灰,再到三面的猜不透面试官态度。三次面试下来,像极了跌宕起伏的故事情节。由于当时投了几个大厂基本都被发感谢信了,所以对百度也没抱太大希望,特别是当二面没做出算法题的时候,感觉我和百度的缘分就到这了。即使如此,心里还是抱有一丝希望,所以收到三面的时候是既意外又恐慌的,想着如果三面挂了该怎么办。三面过后更是寝食难安,每天都在等邮件,没动静的一个星期大概是我经历过的最漫长的一个星期了。
“众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。”愿我们在经历了人生的起起伏伏后,都能够收获一个美好的结果。
#百度##Android##实习#