春招的时候错过了百度,秋招的时候总算抓住机会。
百度笔试:在线笔试(赛码网)的时间是在晚上7点,我实习下班是晚上6点,当时下班后我飞快地赶回宿舍开电脑,连晚饭都顾不上。实践证明,饿的时候头脑是最清醒的。拿下算法题后,笔试应该可以通过。
百度一面
在下午上班的时候,我接到来自北京百度hr的电话,通知我参加现场面试(中间有个小乌龙,hr和我说面试时间是“下午9点”。面试当天上午9点的时候,面试官打电话给我说是上午面试,我汗。。。然后和面试官约好换个了面试时间,改为下午5点半面试)。总的来说,一面侧重考察基础(Java、Android、数据结构与算法、网络、操作系统、数据库),流程走下来到问重点算法的时候,只要求讲清楚原理,没要求写代码。尾声阶段,面试官指出我的优缺点:基础还可以,做应用开发是没什么大问题,但是底层了解不够深入。他说以前学Android的时候,网上没那么多学习资源,都是看Google给的文档和代码学习的。最后和我说,最迟明天下午hr会通知结果给你,听到这句话,我知道我应该通过一面了。
自我介绍
问简历上的项目
(1)项目中你做了哪部分?
(2)有没用开源框架?用了什么开源框架?为什么要用这种开源框架?
(3)讲下ListView如何进行优化Android部分
(1)view如何进行绘制?
(2)Android中的线程了解多少?(AsynTask,Thread等的使用场景)
(3)Android中一个进程对应一个dvm?一个Android应用对应一个dvm?
(4)讲下Android事件传递原理。
(5)讲下即时通讯机制。Java部分
(1)讲下Java四种引用。
(2)讲下Java基本类型与其封装类?为什么要用封装类?
(3)如何在多线程环境保证操作原子性?
(4)讲下JVM内存模型。
(5)final用在哪些场景?有什么作用?
(6)finalize有什么用途?
(7)wait和sleep的区别?
(8)讲下继承和多态。数据库
(1)不用锁的情况如何处理数据库并发问题。
(2)讲下sql左右连接。操作系统
(1)linux多用户登录看到界面为什么不一样?
(2)什么是死锁?数据结构算法
(1)讲下各个排序算法原理。
(2)什么是大顶堆?
(3)讲下二分查找原理。其他
(1)EventBus的原理。
(2)问面试官的问题。
百度二面
我以为百度二面是总监面,结果还是考察基础。二面的面试官比一面的面试官要年轻些。最后手写Code,我先讲解题思路给面试官听,然后他说解题思路ok就可以,不用写,结果我还是耿直地写完了。最后我还是让面试官对我的面试作一次评价。他说我的基础还可以,解算法题的思路也很清晰,缺点还是和一面的面试官讲的差不多,就是没有很深入底层。
自我介绍
Java部分
(1)讲下Java的四种引用。
(2)讲下JVM内存模型。
(3)讲下JVM的回收算法。Android部分
(1)讲下Android的handler机制。
(2)讲下intent显示和隐式启动。应用A可以隐式启动应用B的Activity?
(3)讲下Android桌面图标机制。
(4)讲下view触摸传递机制。假如onTouchEvent都没有返回true,最后被谁消耗了?
(5)惯性滑动如何实现?
(6)滑动冲突如何处理?设计模式部分
(1)你知道多少个设计模式?
(2)写个单例?编程题
(1)用sql语句进行联表查询。
(2)求字符串第一个只出现一次的字符。其他
(1)问面试官的问题。
百度三面
总监面,面试官是来自北京无人车部门。问的问题不多,侧重考察面试者的综合素质。
自我介绍和简单聊聊项目
大数据算法题
(1)两个包含上亿个数字的文件,找重复的数字。(分内存不足和足够内存)分别写出时间复杂度和空间复杂度?网络部分
(1)TCP的状态?
(2)写下Http请求包结构?
(3)Http有无状态?Http如何保存用户状态?
(4)从北京传数据到广州,影响传输效率的因素有哪些?数据库部分
(1)数据库索引的有哪几种实现?数据结构
(1)二叉树如何序列化和反序列化?其他
(1)offer如何选择?
(2)工作地点如何选择?
(3)问面试官的问题?