秋招百度Android面经

春招的时候错过了百度,秋招的时候总算抓住机会。
百度笔试:在线笔试(赛码网)的时间是在晚上7点,我实习下班是晚上6点,当时下班后我飞快地赶回宿舍开电脑,连晚饭都顾不上。实践证明,饿的时候头脑是最清醒的。拿下算法题后,笔试应该可以通过。

百度一面

在下午上班的时候,我接到来自北京百度hr的电话,通知我参加现场面试(中间有个小乌龙,hr和我说面试时间是“下午9点”。面试当天上午9点的时候,面试官打电话给我说是上午面试,我汗。。。然后和面试官约好换个了面试时间,改为下午5点半面试)。总的来说,一面侧重考察基础(Java、Android、数据结构与算法、网络、操作系统、数据库),流程走下来到问重点算法的时候,只要求讲清楚原理,没要求写代码。尾声阶段,面试官指出我的优缺点:基础还可以,做应用开发是没什么大问题,但是底层了解不够深入。他说以前学Android的时候,网上没那么多学习资源,都是看Google给的文档和代码学习的。最后和我说,最迟明天下午hr会通知结果给你,听到这句话,我知道我应该通过一面了。

  1. 自我介绍

  2. 问简历上的项目
    (1)项目中你做了哪部分?
    (2)有没用开源框架?用了什么开源框架?为什么要用这种开源框架?
    (3)讲下ListView如何进行优化

  3. Android部分
    (1)view如何进行绘制?
    (2)Android中的线程了解多少?(AsynTask,Thread等的使用场景)
    (3)Android中一个进程对应一个dvm?一个Android应用对应一个dvm?
    (4)讲下Android事件传递原理。
    (5)讲下即时通讯机制。

  4. Java部分
    (1)讲下Java四种引用。
    (2)讲下Java基本类型与其封装类?为什么要用封装类?
    (3)如何在多线程环境保证操作原子性?
    (4)讲下JVM内存模型。
    (5)final用在哪些场景?有什么作用?
    (6)finalize有什么用途?
    (7)wait和sleep的区别?
    (8)讲下继承和多态。

  5. 数据库
    (1)不用锁的情况如何处理数据库并发问题。
    (2)讲下sql左右连接。

  6. 操作系统
    (1)linux多用户登录看到界面为什么不一样?
    (2)什么是死锁?

  7. 数据结构算法
    (1)讲下各个排序算法原理。
    (2)什么是大顶堆?
    (3)讲下二分查找原理。

  8. 其他
    (1)EventBus的原理。
    (2)问面试官的问题。

百度二面

我以为百度二面是总监面,结果还是考察基础。二面的面试官比一面的面试官要年轻些。最后手写Code,我先讲解题思路给面试官听,然后他说解题思路ok就可以,不用写,结果我还是耿直地写完了。最后我还是让面试官对我的面试作一次评价。他说我的基础还可以,解算法题的思路也很清晰,缺点还是和一面的面试官讲的差不多,就是没有很深入底层。

  1. 自我介绍

  2. Java部分
    (1)讲下Java的四种引用。
    (2)讲下JVM内存模型。
    (3)讲下JVM的回收算法。

  3. Android部分
    (1)讲下Android的handler机制。
    (2)讲下intent显示和隐式启动。应用A可以隐式启动应用B的Activity?
    (3)讲下Android桌面图标机制。
    (4)讲下view触摸传递机制。假如onTouchEvent都没有返回true,最后被谁消耗了?
    (5)惯性滑动如何实现?
    (6)滑动冲突如何处理?

  4. 设计模式部分
    (1)你知道多少个设计模式?
    (2)写个单例?

  5. 编程题
    (1)用sql语句进行联表查询。
    (2)求字符串第一个只出现一次的字符。

  6. 其他
    (1)问面试官的问题。

百度三面

总监面,面试官是来自北京无人车部门。问的问题不多,侧重考察面试者的综合素质。

  1. 自我介绍和简单聊聊项目

  2. 大数据算法题
    (1)两个包含上亿个数字的文件,找重复的数字。(分内存不足和足够内存)分别写出时间复杂度和空间复杂度?

  3. 网络部分
    (1)TCP的状态?
    (2)写下Http请求包结构?
    (3)Http有无状态?Http如何保存用户状态?
    (4)从北京传数据到广州,影响传输效率的因素有哪些?

  4. 数据库部分
    (1)数据库索引的有哪几种实现?

  5. 数据结构
    (1)二叉树如何序列化和反序列化?

  6. 其他
    (1)offer如何选择?
    (2)工作地点如何选择?
    (3)问面试官的问题?