百度+腾讯面经_Android

百度一面

面试中遇到的问题:

  1. MVC模式是什么意思,Model 是否能够直接与 View 进行交互。
  2. 什么是进程,如何创建进程,有几种实现进程通信的方法。
  3. 详细说了下 ContentProvider。
  4. sychronized 与 ReenLock 的区别。
  5. 出了一道关于锁的题目(知识点:对象锁和类锁)。
  6. 用过什么设计模式,说了一堆,然后叫我实现***模式(手写了静态***)。
  7. 什么是内存泄露与内存溢出,Android有哪些内存泄露,面试官着重问了,Handler的内存泄露和解决办法。
  8. 由于在说内存泄露的时候多说了下 GCRoot,就问了下 GCRoots 有哪些。
  9. Looper 的原理。
  10. handle.postDelayed() 中如何实现延迟发送的 (没用过,我只好跟面试官说如果是我我会如何实现,最后回去看了下源码,发现分析对了)。
  11. Android 的四种 LaunchMode
  12. 两种 Service 的区别及其生命周期,Service 是否是全局的(感觉考点是:访问的 Service 是唯一实例,被创建过一次,下一次再启动就不会调用 onCreate())
  13. HandlerThread 与 IntentService原理。
  14. ThreadLocal 的原理。
  15. HashMap 的原理,解决 Hash 冲突有哪几种方法。
    出了一道关于 Set 的题目,创建两个 Person 对象,存入 Set 中,请问 set.size() (考点:重写 equals() 与 hashCode())
  16. 逆序链表。(手写)
  17. 线程池 (说了输入参数、四个预置的ThreadPool 的特点,线程池的源码),面试官一直问我 SchedulerThreadPool 和其他 ThreadPool 的区别,引导说 SchedulerThreadPool 可以实现 delayed (没看过源码)。
  18. UDP 与 TCP 的区别,三次握手机制(手写)
  19. HTTP 和 HTTPS 的区别
    20 .问我面过几家公司,我只能说笔试完的公司都没有发给我通知面试 - -,考官很惊讶的说你居然是第一面。。(难道是被鄙视了。。。)

面试官很友善,不会的题目会引导你。一面问的都是基础知识,没有问 Android 框架源码、项目难点、难的算法。。。

百度二面

问题:

  1. 自我介绍(每个人不同)
  2. 讲解下你在 Github 上的项目(我做了一个网络小说阅读器)
  3. 你知道哪些设计模式,这些设计模式在Android中的使用,然后叫我写了个观察者模式。
  4. Android的 LaunchMode (面试官问这道问题的时候,附加前句是,那我问你个简单的问题,听到这句话当时感觉自己GG了- -)
  5. 举一个例子,说明你的学习能力(这个没准备。。瞎说了一通)
  6. 知道几种单例模式的写法,写一个单例模式,为什么使用这种写法。(我写了枚举的写法,然后从单例的线程安全,如何破坏单例模式进行分析)
  7. 最后问了个面试官,如何看待这次百度全面禁止 React Native - -。。。

关于第三点设计模式在Android中的使用,之前没准备,脑回路没转过来,所以我就跟面试官说,在Android的框架中用到的设计模式比较多,然后讲Glide、OkHttp、Retrofit、RxJava 源码中是如何使用设计模式的。回去想了下,Android源码中的设计模式,大概总结了

如下几点:

  1. Adapter:适配器模式。
  2. Binder: AIDL 生成的***模式。
  3. AlertDialog: 建造者模式。
  4. View的事件分发: 责任链模式。
  5. LayoutInflater: 单例模式。
  6. ListView源码: 观察者模式。
  7. File文件流: 装饰者模式。
  8. ExecutorSerivce: 对于创建 Thread 的简单工厂模式。
  9. 属性动画:策略模式

当然这只是一部分,各位牛油可以自己分析分析。。

这次面试我挖了挺多的坑,面试官都没接。只面试了我20分钟,就叫我走了。。。当时感觉自己 GG 了,为嘛啥都不问咧,问的都回答上来了呀,难道是走个过场。。。。然鹅,当天晚上居然收到了,二面通过的消息,想了想,面试都是玄学,唉。。。。

百度三面

面试的问题总结:

  1. 自我介绍
  2. 讲解项目
  3. 谈一了追求新技术的问题

项目部分:

  1. 面试官首先问我在 github 上的项目的缺点,我说了 xxx 巴拉巴拉。其中涉及到了绘制方式复杂造成视图的卡顿问题,然后我说成了过度绘制- -。然后他就问,如果在一个 xml 中每个 View 都是必要的,应该如何优化卡顿问题。(感觉回答的不太好)
  2. 由于图片加载造成了OOM问题,应该如何解决。我说了压缩 Bitmap 和使用 WeakReference,Lru。他就问如果每个图片都是必须的,并且已经压缩了。那么该如何解决 OOM,当时只想到对 Java 堆进行扩容。
  3. 用10个字说出我个人项目的核心代码 (我说了一堆,他说我没有 GET 到他的点。。尴尬,这不是我的项目么 - -,为什么我的项目的核心代码,我自己都不知道 Orz)
  4. 你的项目支持的版本支持到 Android 几,我说 6.0 的权限没有做,所以只支持到 6.0 以下。他问我为什么没做,现在都出到 O 了,你咋还没支持到6.0 咧,我说这是之后的内容,不是我非常重要的优先级。然后问我各版本 Android 的特点,如何适配。
    说我为什么研究框架的源码,我说是为了爬坑,那你在框架上遇到过哪些坑。
  5. 问我在项目中如何使用 RxJava(链式调用,线程切换,背压) ,还有冷热发射器(RxBus),说我太过推崇 Rx 系的东西,但是又对这个框架大材小用,然后问我 Rx 这个思想是从哪里来的? (猜了个微软,他说从 js 中来的)
  6. 说说你在项目中是如何使用 MVP 模式的。
  7. 说说你对 lambda 表达式的优缺点(项目中用到了),然后谈他们团队对于 lambda 的理解。
  8. 说说你对 Android O 的了解,我说完之后,他跟我说他自己也不知道。(真会开玩笑。。。)

聊天的问题:

  1. 如何推动一项新技术,在团队之中使用。我说了 xxx ,他说没有 GET 到他的点 - -。
  2. 换了个问题问我,如果团队给你一项任务,你要在一周内完成,但是如果你使用新技术最短需要在两周内完成,应该怎么办。
    反正之后都是这类的问题 - -,聊了好久。。

最后在我提问的时候,又开始聊起来了。不知道是聊天中的哪一句话打动了他,他就跟我说刚才你都没有 GET 到我的点,你现在这句话才是我要的 (???,额。。。Orz)

好多问题没有遇到过,总结下来感觉回答的不太好。。

自我总结:

  1. Android 基础要打好。
  2. 对自己的项目要十分的了解。

腾讯面试,跟以前面试的流程完全不一样,有点懵逼。。。在成都腾讯大厦面的,基本上每个人都给了2面机会,但是问的知识点比较少,所以面经就附带了,当然最后跪了。。。。

腾讯一面(30分钟)

面试官全程问项目,大概问题是这样的:

  1. 自我介绍,边介绍边画我的简历。。
  2. 说出你项目中,认为最难的项目。
  3. 项目中的难点在哪里,如何实现的。(这里说了一堆)
  4. 你项目中存在什么问题,我说了一个上下滑动卡顿的问题(自制的ListView,用来解决小说翻页问题),我当时没修复这个问题。
  5. 那你觉得可能出现这个问题的可能原因是什么,如何检测、分析。(这个问题考个人的解决方式,就不说了)
  6. 如何解决死锁,项目中遇到过死锁的问题没有。(没遇到过)
  7. MVP 与 MVC 模式

除了项目,基础问题都没问。。。

一面完,问了一个一起面试的,他说他二面大概10分钟,几个问题就结束了。

腾讯二面(10分钟)

问题如下:

  1. 冒泡排序。
  2. Java的基础类型的长度。
  3. String是否可以使用 switch,原理是什么。
  4. RxJava 源码 (我说的时候,面试官全程看别人,当时感到自己凉了。。)
  5. 功能题:如何实现一个文件的多并发下载。(这个功能没实现过,答了可能的实现方式,但是深入到下载优化的时候,没回答好)

第五题没回答好,所以最后感觉,跪的不冤。。。。总体而言,腾讯比较偏于项目。

全部评论
哥们面的啥部门
点赞 回复
分享
发布于 2017-09-27 11:11
你官网状态有变化吗?感觉答得比我好太多了
点赞 回复
分享
发布于 2017-09-27 11:14
联易融
校招火热招聘中
官网直投
所以我想请教一下,mvc中model可以直接联系view吗?mvp模式我知道不可以,mvc我有点不清楚
点赞 回复
分享
发布于 2017-09-27 11:26

相关推荐

点赞 51 评论
分享
牛客网
牛客企业服务