首页 > 其他分享 >金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)

金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)

时间:2023-06-22 11:37:36浏览次数:37  
标签:面试题 面试 如何 内存 二叉树 Android 首战告捷


笔者从前期准备到所有面试结束,花费了差不多3个月的时间。真可谓“面试造火箭,工作拧螺丝”,面试过程真的很累很辛苦。

笔者面了很多公司,最终拿下了百度、腾讯和京东的offer,最后可能会选择京东。有人可能会问为什么不选择腾讯?的确腾讯的工资很高,福利待遇也很好。我觉得在京东能接触到更多新颖的技术,以至于我不会在30+、40+的时候更快的被市场淘汰。

在与京东的面试官交流时,发现他们的技术相对来说更新颖一些,包括Kotlin、Flutter和Jetpack,都有一些实践,也都是我想学习的东西,这边的业务也更感兴趣一些。另外,在谈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总是有很多种问法,比如:

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

回答建议:

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

关于如何复习

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

金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)_Java


因图片太大,无法全部展示

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

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

在面试之前我把各个大厂近几年的面试题做了一个整理,下面分享给大家,希望大家能在金九银十找到满意的工作。

第一章 网络面试题

1.HTTP协议
2.TCP/IP协议
3.TCP的三次握手与四次挥手理解及面试题
4.网页中输入url,到渲染整个界面的整个过程,以及中间用了什么协议?
5.TCP和UDP的区别?
6.HTTP的几种请求方法具体介绍
7.HTTP请求和响应报文的格式,以及常用状态码
8.一个 TCP 连接上面能发多少个 HTTP 请求

金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)_设计模式_02

第二章 Java面试题

1.HashMap
2.ArrayList
3.LinkedList
4.Hashset源码分析
5.内存模型
6.垃圾回收算法(JVM)
7.垃圾回收机制和调用 System.gc()的区别?
8.类加载过程
9.反射
10.多线程和线程池
11.创建多线程方式、线程池工作原理
12.设计模式(六大基本原则、项目中常用的设计模式、手写单例等)
13.断点续传
14.Java 四大引用
15.Java 的泛型
16. final、finally、finalize 的区别
17.接口、抽象类的区别
18.从 java 容器类的设计讨论抽象类和接口的应用
19.synchronized和lock的区别

金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)_android_03

第三章 Android 面试题

1.Activity启动模式
2.Activity的启动过程
3.进程通讯
4.Android Binder之应用层总结与分析
5.进程保活方法
6.从源码了解handler looper ,messageQueue思路
7.handler如何实现延时发消息postdelay()
8.Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
9.RxJava原理及如何封装使用
10.okhttp源码分析
11.retrofit源码分析
12.LeakCanary核心原理源码浅析
13.LruCache 使用及原理
14.ARouter原理
15.注解框架实现原理
16.Android 如何编写基于编译时注解的项目
17.RxJava2+Retrofit2+OkHttp3的基础、封装和项目中的使用
18.Rxjava2.0+Retrofit+Okhttp(封装使用)+MVP框架搭建
19.Android 插件化和热修复知识梳理
20.Android开发中比较常见的内存泄漏问题及解决办法
21.如何检测和定位Android内存泄漏
22.图片占据的内存算法
23.为什么图片需要用软引用,MVP模式中的view接口用弱引用
24.基于DataBinding与LiveData的MVVM实践
25.App稳定性优化
26.App启动速度优化
27.App内存优化
28.App绘制优化
29.App瘦身
30.网络优化
31.App电量优化
32.安卓的安全优化
33.为什么WebView加载会慢呢?
34.如何优化自定义View

金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)_Android_04

第四章 数据结构与算法面试题

1.常用的数据结构有哪些?
2.数组
(1).如何在一个1到100的整数数组中找到丢失的数字
(2).如何在给定的整数数组中找到重复的数字? (小米)
(3).如何在未排序整数数组中找到最大值和最小值?(字节跳动)
(4).在Java中如何从给定数组中删除多重复制?
(5).大数相加(今日头条)

3.链表
(1).那查询第一个跟倒数第二个呢?(这就不一样了,第一个直接给了头结点,倒数第二个需要从倒数第一个开始查询,走两步) (腾讯)
(2).arrayList底层原理 (滴滴)
(3).如何在一次遍历中找到单个链表的中值?(中国平安)
(4).如何证明给定的链表是否包含循环?如何找到循环的头节点?(优酷)
(5).两个有交叉的单链表,求交叉点 (华为)
(6).如何得到单链表的长度?(360)
(7).如何在不使用递归的情况下逆转单链表?(小米/美团)
(8).怎么判断链表有环? (滴滴)

4.队列&堆栈
(1).如何使用栈实现队列的功能(广州荔枝FM)
(2).两个栈实现一个队列(蘑菇街)
(3).两个队列实现一个栈 (腾讯)
(4).对比一下队列和栈,以及它们底部实现 (腾讯)

5.二叉树
(1).如何在给定的二叉树中执行先序遍历?(百度)
(2).如何实现后序遍历算法?(百度)
(3).如何在给定数组中执行二分法搜索?(苏宁)
(4).已知前序遍历为{1,2,4,7,3,5,6,8},中序遍历为{4,7,2,1,5,3,8,6},它的二叉树是怎么样的?
(5).输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。 (爱奇艺)
(6).请实现两个函数,分别用来序列化二叉树和反序列化二叉树(YY)
(7).平衡二叉树和红黑树的区别?(字节跳动)
(8).什么是平衡二叉树,它有什么特征 (美团)
(9).B 树,B+树

6.HashMap
(1).HashMap的底层原理是什么?线程安全么? (百度)
(2).HashMap中put是如何实现的? (滴滴)
(3).谈一下hashMap中什么时候需要进行扩容,扩容resize()又是如何实现的?
(4).什么是哈希碰撞?怎么解决? (滴滴)
(5).HashMap和HashTable的区别 (小米)
(6).HashMap中什么时候需要进行扩容,扩容resize()是如何实现的? (滴滴)
(7).hashmap concurrenthashmap原理 (美团)
(8).arraylist和hashmap的区别,为什么取数快?(字节跳动)

7.图
(1).旋转输出矩阵
(2).给定一个矩阵 int matrixA[m][n],每行每列都是增序的,实现一个算法去寻找矩阵中的某个元素 element. 搜狗

8.排序算法有哪些?
9.查找算法
10.串

金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)_android_05

第五章 开源框架

1.Okhttp
2.Glide
3.LruCache的原理是什么?
4.Glide如何绑定生命周期
5.Retrofit
6.LeakCanary

金九银十首战告捷,五年Android开发工程师面试经验分享(附面试题解析)_Android_06

总结

面试的准备其实是在我们平时工作过程中一点一滴积累的,复习只是作为一种在面试前巩固知识的手段。复习的过程主要是我们对知识点的整理和总结,你可以想一下在面试的时候可能会遇到的问题,以及该如何去表达。

但是我想说,虽然“临时抱佛脚”的准备可能有时有用,但是在短时间内靠“突击”是很难理解到某个知识点更加深度层次的内容,而且知识面的广度也是需要时间和经验去积累的。

所以不管你是否需要面试,在平时工作过程中都需要多思考、多训练、多总结,在有需要的时候可以厚积薄发。


标签:面试题,面试,如何,内存,二叉树,Android,首战告捷
From: https://blog.51cto.com/u_16163452/6534465

相关文章

  • Win7 配置Android开发环境
    一、安装JDK下载JDK最新版本,下载地址如下:http://www.oracle.com/technetwork/java/javase/downloads/index.html这里我下载的是:JavaSEDevelopmentKit6u24forWindowsx64,Multi-language,即这个文件:jdk-6u24-windows-x64.exe下载后安装。Windows下安装完毕后需要设置三个......
  • Android,两个互相影响的EditText如何避免死循环
    简单来说,是一个类似如下的需求:两个EditText,假设名字分别是et1和et2;et1的值*一个数字,假设是4500=et2的值;当et1的值发生变化时,et2的值也发生变化,et2的值发生变化时,et1的值也发生变化,用过用简单的 TextWatcher就会发生死循环,如何避免,下面是这个例子代码的最核心部分,简单来说就......
  • Android如何实现可插拔配置?
    大家好,我是3y,一年CRUD经验用十年的markdown程序员......
  • Android 面试 | 开源库面试题
    1,HTTP与缓存理论1.1HTTP缓存策略HTTP的缓存机制也是依赖于请求和响应header里的参数类实现的,最终的响应结果是从缓存还是从服务端拉取是有一套完整的机制的,HTTP的缓存机制的流程如下所示。HTTP的缓存可以分为两种:强制缓存和对比缓存1.2强制缓存要服务端参与判断是否继续使用缓存,......
  • Android ANR 实现机制详解
    一ANR概述ANR(ApplicationNotResponding),即应用程序无响应,Android系统指定某些事件需要在规定时间内完成,如果超过预定时间还能未能得到有效响应,就会造成ANR。具体表现为,应用位于前台时,系统会向用户显示一个对话框,如下图所示。用户可以选择“wait”让程序继续运行,也可以选择“......
  • 史上最全Android性能优化方案解析
    Android中的性能优分为以下几个方面:布局优化网络优化安装包优化内存优化卡顿优化启动优化……一.布局优化布局优化的本质就是减少View的层级。常见的布局优化方案如下:在LinearLayout和RelativeLayout都可以完成布局的情况下优先选择LinearLayout,可以减少View的层级,但是注意相同组......
  • Android App运行核心,Handler,Looper,Message
    目标在手机屏幕上显示指定的区域两种方法在已存在的图片上,绘制矩形,查看图片在全屏透明悬浮窗上直接画矩形已有图片绘制矩形读取图片letimgFilepath=files.path("./chess.png");letimg=images.read(imgFilepath);设置绘制区域letrect={left:52,top:20,rig......
  • android RecyclerView嵌套 RecyclerView 子item 和 父item点击事件如何处理
    前言经常会遇到列表嵌套列表的场景,那么父item和子item会有点击重叠该怎么处理尼?先上效果父adapteropenclassStoreListAdapter(layoutResId:Int,data:MutableList<StoreGoodsBean>):BaseQuickAdapter<StoreGoodsBean,BaseViewHolder>(layoutResId,data){//子adapt......
  • Android开发必备——注解
    前言阅读官方源码以及各类第三方框架时可以发现,很多地方都有注解,作为一名Android程序员,掌握注解属于必不可少的一项技能。1.什么是注解注解是以@符号开头的用来标识如类、字段、方法等的工具。说到注解,就不得不提另外一个概念——注释,两者其实都是做解释的功能,只不过注释是面向开......
  • Android 屏幕适配基础
    Pixels和dp、sp的区别不同屏幕密度下,1p显示的物理长度不同1dp在不同屏幕上显示相同的物理长度sp只用在字体上,和dp一样为了让在不同设备上有一致的显示效果单位尺寸搞清楚屏幕的各种单位含义,是屏幕适配的基础屏幕尺寸含义:手机对角线的物理尺寸单位:英寸(inch),1英寸=2.54cm屏幕尺寸......