写点什么

2018 届 android 校招面试总结:百度,大疆,乐视

用户头像
Android架构
关注
发布于: 刚刚

首先,我是一个双非本科的大四狗,一直在搞安卓,自学一年多的时间,然后有半年多的实习经历...安卓真好玩,就是肚子有点饿~ 接下来,按时间的顺序的记一记我这一个月以来所经历的面试。 (现在已经毕业参加工作了,目前就职人人车,做客户端开发。)

百度:社招(导师内推)

一面:

1、四种启动模式,结合具体情况分析。


答案更新:这个就不多说,现在没人想听概念性的答案,一般都会结合实际场景,去考察对 singleTask,singleTop,singeInstance 的理解


2、onNewIntent 被回调,Intent 内容是最新的么?那其他回调里的 Intent 是最新的么?


答案更新:在 onNewIntent 方法中的 Intent 是最新,但是其他回调里不是。如果想让其他回调也是最新的 intent,需要在 onNewIntent 里,setIntent(),对最新的 intent 进行赋值。


3、Service 的 start 和 bind 的区别?多次 start 和 bind 的生命周期情况?start 和 bind 都调用了会怎么样?


答案更新:区别就不多说了。首次启动调用 onCreate(),再次启动只会重复调用 onStartCommand;bind 方式不会调用 onStartCommand,并且 onBind()也只会调用一次。重复 bind 和 unbind,并不会重复出发 onBind 和 onUnBind,但是 onServiceConnect 和 onDis...会重复调用。 start 和 bind 都被调用,必须 unbind 和 stop 都调用才会彻底 kill 掉。


4、常见的内存泄漏/内存溢出?怎么解决?


答案更新:可以使用 LeakCanary 或者 Androidstudio 自带的工具进行分析。这类文章比较多。 常见的内存泄漏,套路性也是比较常见的:1、内部匿名类 Handler 做耗时操作。因为会持有外部引用,尤其是 Activity,如果耗时操作没有结束,而 Activity 销毁,那么此时 Activity 是没办法被 gc 回收掉的。2、一些 Listener 没有其实的 remove 掉,其实和 Handler 的原因很历史。3、还有一些需要 unRegister 没有 unRegister。等等


5、多进程 application 会初始化几次?怎样进行跨进程通讯?SP 属于文件,为什么不能跨进程?聊一下对 Binder 机制的了解?


答案更新:每一个进程都会初始化一个 Application。跨进程可以使用 AIDL,或者广播,数据库,第三方的文件等操作。SP 虽然是存在 xml 文件里,但是系统对 SP 进行了缓存操作,因此更新不及时,所以多进程并不安全。 Binder 机制...比较复杂,各位看官可以搜一搜对应的文章。


6、能否在子线程更新 UI?那为什么 onCreate 中可以更新 UI?简单聊一下 View 的绘制过程?


答案更新:子线程检查方法 checkThread()在 ViewRootImpl 中被调用,而 ViewRootImpl 在 handleResumeActivity 时被添加,也就是对应的是 onResume()。所以也就是说在 onCreate 时根本不会执行 checkThread()方法。


7、聊一下 Handler 机制?为什么 loop 是死循环不会阻塞主线程?postDelayed 怎么做到延时的?


答案更新:关于这个问题,可以看这个答案:https://www.zhihu.com/question/34652589


8、手写一个链表翻转吧。


答案更新:思路有很多,如果不要求空间复杂度,可以使用栈,将链表一个个 push 到栈中,然后逐个 pop,就把链表翻转了。


写完链表翻转,一面就结束了。整体来看难度适中吧。面试官没有特别狠的追问。

二面:

二面刚开始没怎么聊技术,问一问我是一个应届生怎么参与社招了。我如实回答了一下,又扯了扯其他的。然后大部分时间是在听我说。


1、聊一下你看过的源码吧?EventBus、OkHttp、属性动画。


2、你说你擅长自定义 UI,聊一聊吧?


3、


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


有没有做过的什么效果?看过一些后问怎么实现的?


二面没怎么发问,就到了三面....

三面:

三面就问了一下 TCP 和 UDP 的区别,线程和进程的区别。


然后就很直白的说,前俩轮面试对你评价还可以。但是你没有正式的工作经验,社招肯定是不行,校招又已经过去了,我只能给你实习 offer。但是我还得去问一下 HR 那边....


不得不承认,这次面试的结果给的挺快。离开百度科技园之后,还没到家。HR 那边就打来电话.....总结下来就是连实习 offer 也不能发...手动摊手.png

大疆(自投,实习)

因为岗位是实习,所以整体感觉难度一般。

一面:

面试官应该是主要做 UI 的,所以问的问题大多数和 UI 相关


1、onMeasure() / onLayout() / onDraw() 区别?Measure 的三种模式?Canvas 有没有边界,View 的边界怎么确定?


2、事件分发的过程?onTouch 和 onClick 的先后顺序?onTouch 和 onTouchEvent 返回 true 是什么情况?如果在 onTouch 中的 DOWN 返回了 true,MOVE 返回 false 会接到后续的事件么?


3、了解什么设计模式?日常开发用到过么?


4、手写俩条链表合并

二面:

二面并没有追问我什么,大部分时间再根据我的简历,让我自己说...


大疆的效率还是比较高的。我中午吃饭的时候,HR 给了我反馈说可以过来实习,但是我们目前并没有校招的 hc,所以不能给你正式的身份...所以我并没有选择过去实习。

乐视(自投,校招)

笔试:

笔试没啥特别的东西,都是一些 java 基础,安卓基础,几道中规中矩的算法。

一面:

1、四种启动模式?写了几个情况,让我说 back 键的情况?


2、LayoutManager 和 MeasureSpec 之间的关系?


3、堆排的思想?快排的时间复杂度?手写一下快排?


4、Handler 机制?


5、Service 即 start 又 bind,怎么才能彻底停止?IntentService 怎么实现的?


6、Aidl 中 Stub 和 Proxy 的区别?聊一聊对 Binder 的理解?


7、手写一个有序数组的合并?

二面:

二面整体就是根据我的简历,问了问。让我聊一聊看过的 OkHttp 的源码。 手写了俩个算法:


1、用最小的时间复杂度判断单链表是否有交点。


2、手写二叉树的按层级进行遍历。

HR 面:

谈人生谈理想...


乐视的效率不算高...一周后给了答复,可以给 offer...不过鉴于乐视最近的情况...再考虑吧

知乎

知乎算是一次体验比较差的体验...一面就让我走了,而且我都不知道啥原因。手动摊手.png

一面:

1、聊一聊 ArrayList 源码?什么时候初始化数组?怎么扩容?扩容时使用什么样的方式增大数组?

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
2018届android校招面试总结:百度,大疆,乐视