2022百度地图-Android岗位面试经验分享

276 阅读3分钟

面试流程

50分钟 = 自我介绍(5-10分钟)+ java基础知识(5分钟)+ Android基础知识(15分钟)+ 算法题(15)+ 其他(5分钟) + 答疑

整体感觉,偏向简短的问题,回答要简洁,突出重点

Java基础知识

1. 简单介绍基本的设计模式,如:门面模式,访问者模式,装饰模式,继承与组合,责任链模式

  • 门面模式 是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
  • 装饰模式 指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
  • 责任链模式在面向对象程式设计里是一种软件设计模式它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。简单来说就是:链头到链尾依次处理输入流,链尾到链头依次处理输出流。

2. MVC MVP MVVM区别

答:

3. Clean架构核心思想

  • 满足众多利益相关者的需求
  • 支持关注点分离
  • 脱离实现世界(Android、Intent、DB)
  • 使组件可测试

Android基础

1. 啥是aidl,binder关系

答:

2. 一个进程有多少个Context实例,Context存在的意义

Context的继承关系如下: image.png

其他相关的还有:ContextImpl,ReceiverRestrictedContext

class ContextImpl extends Context
class ReceiverRestrictedContext extends ContextWrapper 

四大组件里的Context分别为: Activity:Activity Service:Service ContentProvider:Application BroadcastReceiver:ReceiverRestrictedContext

ReceiverRestrictedContext 封装类 , 重写了 registerReceiver , registerReceiverAsUser , bindService 3 个函数 ;
在 广播接收者 中 不能注册广播接收者 , 不能绑定服务 ;
一旦发现在其中注册广播接收者 , 或者绑定服务 , 立刻 抛出异常 ;

详细说明参见:【Android 安全】DEX 加密 ( Application 替换 | 分析 BroadcastReceiver 组件中调用 getApplication() 获取的 Application )

3. ListView和RecyclerView的区别

答:

4. 为什么使用Bunder,而不是HashMap等其他数据结构

答:

算法题

题一

剑指 Offer II 076. 数组中的第 k 大的数字 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:

输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2:

输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4  

提示:

1 <= k <= nums.length <= 104 -104 <= nums[i] <= 104

来源:力扣(LeetCode) 链接:leetcode.cn/problems/xx… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题二

其他

1. review代码常见问题

  • 空指针异常
  • 多线程问题
  • 类之间依赖关系不清晰,职责不清晰,需要复制代码到相应的类里

2. 团队协作沟通中的心得体会

  • 跟对方有依赖时,明确行动项
  • 文档的重要性,如果作为基础组件,接入方的提问,需要汇总到文档里
  • 高效会议,提前写好文档,写查看