过去3个月各种Android面试_设计模式

在过去的3个月里,笔者历经了各种面试的考验。这场考验,就像是在造火箭,复杂而艰辛。尽管如此,笔者凭借自己的实力和努力,最终拿下了百度、腾讯和京东的录用通知。经过深思熟虑,笔者可能会选择京东,这也许让你感到有些意外。

腾讯无疑是一个诱人的选择,它提供的薪资和福利待遇都相当可观。笔者之所以选择京东,是因为在这里,他们能够接触到更多新颖的技术,这对于未来的职业发展至关重要。

更值得一提的是,在谈offer时,京东的面试官展现出了满满的诚意,让笔者感受到了被尊重和重视。这也让笔者更加坚定了选择京东的决心。

下面是面试题摘要:

百度:

  • 有没有遇到OOM问题(有遇到内存泄漏问题)
  • Handler机制
  • ThreadLocal
  • Activity启动到加载View过程
  • View绘制过程
  • ListView和RecyclerView区别?
  • RecyclerView卡顿怎么排查?
  • RecyclerView怎么实现多Type?
  • RecyclerView的ItemView层级过深怎么优化?
  • Android多进程?
  • 怎么设计Android线程间通信?
  • LinearLayout (wrap_content) & TextView (match_parent) 最终结果???
  • OKHttp(1. 为什么选择它? 2. 性能了解不?3. 内部有哪些设计模式)
  • 了解EventBus嘛?
  • 用过哪些设计模式
  • 观察者举例 ......

腾讯:

  • Android中的Context了解多少
  • Application里面可以弹窗吗
  • Activity、Window、View三者的关系
  • OkHttp中有哪些设计模式
  • Retrofit中有哪些设计模式
  • Retrofit.create做了哪些工作
  • 自定义一个圆角View
  • 协程launch有哪些参数
  • 说说by关键字
  • 代理和委托的区别
  • 双亲委托模式
  • 有几种获取view宽高的方式
  • view.post为什么可以获取到
  • getWidth和getMesureWidth的区别
  • 讲讲 handler 的底层实现原理?
  • 说说你做的日志记录优化?
  • 你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进程传递大内存数据你具体会怎么做?简单写一写吧
  • 在公司做过哪些优化?

京东:

  • StringBuilder、StringBuffer的区别,为什么StringBuffer快一点,看过这两个的源码没有,线程安全是怎么实现的
  • LRUCatch的原理实现
  • 一些排序算法的时间复杂度:冒泡、快速排序
  • try。。。catch。。。finally 问了个通过 exit()退出程序 会不会执行finally
  • Java容器,set map的区别
  • TCP UDP区别
  • 设计模式,主要问了工厂模式的几种情况
  • 讲一下Java内存模型 局部变量存放在哪
  • 讲一下引用传递
  • 讲讲Handler机制。解释发送一条消息会经过哪些过程。问了我Handler源码看到哪一层(看到了Java)。Handler创建好以后怎么才能关联到他所在的线程?(这个回答的不是很好,感觉是在Handler的构造方法里关联的?),问了要传进什么参数
  • ListView的VIewHolder为什么可以减少内存的使用
  • 多线程相关。Java中控制多线程的方法。锁、synchronize(可以对哪些对象加锁(静态变量加锁和对普通变量加锁有什么区别),实现原理)、wait notify
  • ANR。在广播内做耗时操作会怎么样

HR面问题整合:

  • 为什么离职
  • 介绍一下过往的工作经历
  • 在上家公司你有什么收获吗
  • 目前看机会会考虑哪些因素
  • 你在之前的团队中是怎样一个角色
  • 有什么兴趣爱好吗
  • 最有成就感的一件事
  • 有没有做过什么不可思议的事
  • 你认为自己的优点是什么
  • 最近有在看什么书吗,有什么感想
  • 你一般遇到问题都是怎么解决的
  • 未来的职业规划是什么
  • 你对未来的公司有什么期望吗
  • 目前薪资
  • 期望薪资
  • 还有什么想要问我的吗

如何写好简历

简历是开启面试的第一步,重要性不言而喻,一方面反应你的实力,另一方面也反应跟目标岗位的匹配度,不过很多JD都是复制粘贴,我个人也没有动态改简历。

如何写好简历,一定要简洁且突出重点。我也面过不少人了,看过7-8页的简历,有些项目经历是没必要全都往上写的,面试官也看不过来,最好是保持在3页左右比较合适,项目经历比较丰富的同学,可以挑重点来写。

我个人简历大概模板:

  • 个人信息
  • 技能清单
  • 工作经历/项目经历
  • 开源项目/博客
  • 教育经历

我是MD排版,PDF格式,参考模板

投简历时有一个建议,不要开放简历,要主动投递。开放简历会有各种邀请面试,也不好拒绝,就可能会因为没准备好而错失一些机会。可以先去其他公司找找感觉,再面心仪的公司。

另外,一定要对自己简历上写的东西做到熟练,没用过的,不会的就别写了,万一问了不会,就是在给自己挖坑。

自我介绍

自我介绍需要好好准备,因为这可能是你整个面试环节中唯一的主动机会,也是引导面试官的第一步,可以介绍最近的项目经历啥的,以及相关技术栈等等,引导面试官往你擅长的领域提问。

挑重点不要啰嗦,时间控制在两分钟左右。

离职原因

这个其实大家都心知肚明,但是回答的时候还是委婉些的好,不抱怨原则。

不过HR总是有很多种问法,比如:

  • 你在上家公司才做了一年多,为什么选择离职呢?
  • 你在上家公司已经做了四年多,为什么选择离职呢?

回答建议:

  • 想去更好的平台
  • 薪资与个人付出不成正比
  • 公司业务方向与个人职业规划出现偏离

关于如何复习

对于复习,首先要对自己做一次自我了解,我是通过画脑图来进行这个过程的,我会整体默想一遍大概的知识体系,画成类似下图。回想每个知识点可能考到的内容,记录下自己模糊的地方,然后去看网上总结的面试题,再对每个题目都做一下回答。这是一个迭代过程。

过去3个月各种Android面试_设计模式_02

因图片太大,无法全部展示,需要的下文有获取方式。

在你预想的问题都可以回答上来的时候,就需要深入挖掘一下技术细节和深度了,比如我工作中开发了一个PLT Hook工具,这个工具可能是我参考开源项目并封装修改过来的,但对其中的细节并没有很了解,这个时候你就要对这个开源项目所涉及的内容做一次系统学习了。

算法这一块的话,“临时抱佛脚”对于算法的学习和积累作用不是很大,因此需要我们在平时繁忙的工作中抽出一些时间来复习,你也可以去、LintCode上刷刷题。另外,虽然大部分面试的算法题目都是上的简单题目,但你同样也需要关注一些中等和困难难度的经典题目。


过去3个月各种Android面试_项目经历_03

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: android