写点什么

Android 开发 1 年背了几十份面经还是连挂了 6 个面试,拿到最终字节腾讯 offer 后我总结了这些坑点

用户头像
Android架构
关注
发布于: 4 小时前

1.离职原因方面


其实大家换工作无非钱少了/环境不好/没成长三种原因,但是面试在讲离职原因的时候一定不要过于实诚,请尽量往个人发展这个方向上靠拢,切忌一定不要说现任公司的坏话,尤其是跳槽频繁或者像我这种第一份工作不满两年的,一定要想好自己的离职理由,我有几家公司明显技术答的还行,但是因为离职理由挂掉的。


2.简历投递顺序方面


如果你对自己很有信心的话,可以直接投你的意向公司,如果信心不够强烈建议跟我一样先面几家体量不那么大的公司涨涨经验看看现在外面的行情,然后再投自己中意的公司。


3.心态准备方面


既然准备了要离职,就不要被任何其他事物影响心态,心态真的很重要。刚开始面试的时候我真的是处处碰壁,面一家挂一家,后来在一家面试过程中被面试官疯狂嘲讽,面完之后怀疑自我,是不是自己真的太菜了找不到工作。后来也辛亏隔天有一家公司给我发了 offer,让我明白了不是自己的问题。工作本身就是双向选择,一家不行再换一家,总有合适的,千万不要因为别人的一句话就全盘否定自己,一定要自信。


4.技术准备方面


刚开始面试的时候是准备把面试过的所有家都写详细的题目出来的,后来发现写了面经发在牛客的都挂了,也不知道是什么奇怪的玄学,后来就没发过了,不过其实面过来面过去就那些问题,就像下边这样整体总结一下吧。


Java

  • 怎么判断一个字符串的字符个数,比如说中文

  • Java 的异常机制,为什么这么设计,什么时候用什么

  • HashMap,经典的就不一一列举了,说几个可以拓展的

  • 解决 hash 冲突的方案有哪几种

  • 1.7 和 1.8 有什么区别(链表头插尾插方面)

  • hashmap 高并发场景会怎样

  • 高并发链表成环会有什么问题

  • hashmap 扩容时到底干了什么(位运算过程)

  • concurrentHashMap 原理

  • String,StringBuilder,StringBuffer

  • ArrayList 多线程下会有什么问题

  • 内部类持有外部类引用的原理是什么

  • volatile 有什么用,原理是什么

  • 为什么会有 StackOverflow,stack 的大小是多少

  • 虚拟机

  • Java 虚拟机和 Android 虚拟机有什么区别

  • Android 两种虚拟机有什么区别

  • 类加载过程

  • 内存模型

  • 四种引用类型

  • class 文件格式

  • synchronized 底层实现原理

  • synchronized 放在普通方法和静态方法上有什么区别

  • synchronized 的锁实际是保存在哪里的(对象头)

  • 双亲委派机制,为什么要用双亲委派机制,如何打破双亲委派机制

  • 内存收集整理的算法

Android

Activity


  • Activity 的生命周期

  • dialog 会不会影响 Activity 生命周期,为什么

  • Activity 的启动模式(还会伴有场景让你说这种场景选哪个合适)

  • Activity 任务栈以及 taskaffinity


Service


  • Service 存在的意义是什么

  • startService 和 bindService 的生命周期

  • startService 和 bindService 的区别

  • startService 和 bindService 分别适合应用在什么场景

  • Service 可以执行耗时操作吗

  • IntentService 和 Service 的区别

  • Service 和线程都可以用来执行后台任务,为什么选 Service 不选线程,明明线程用起来更简单


broadcastreceiver


  • 广播的原理是什么


View 的绘制流程


  • 详细讲一下 View 的绘制流程有哪些

  • View 的第一次绘制是怎么调到的

  • View 的后续绘制是怎么调用的

  • View 的 onMeasure,onLayout,onDraw 都分别用来干什么

  • 除了上面三个,还有哪些关键的方法

  • invalidate 的原理

  • invalidate 和 requestlayout 的区别

  • requestlayout 的作用范围是多大

  • 一个 View 被添加后第一个回调的方法是哪个(onAttacthToWindow)

  • 为什么 View.post 能拿到 view 的宽高

  • 讲一些字节做过的自定义 VIew 的例子


触摸事件分发


  • 讲一下 Android 事件分发的流程

  • 怎么处理滑动冲突

  • 怎么判断手势

  • 讲一些自己做过的处理滑动冲突的原理

  • 事件分发

  • handler 这套机制的原理

  • IdleHandler 是什么

  • handler 的 postDelay 怎么实现的

  • Message 有个缓存池,缓存池大小是多少知道吗

  • MessageQueue 的中没有消息的时候为什么不会 ANR

  • 知道 epoll 的底层原理吗

  • epoll 是阻塞的吗


ANR


  • ANR 是什么

  • ANR 的原理

  • 什么情况下会发生 ANR

  • 如何检测是否发生了 ANR


SharedPreference


  • SharedPreference 原理


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


  • SharedPreference 的优化

  • SharedPreference 的 commit 和 apply 区别

  • 什么情况下会选择用 SharedPreference


序列化


  • Serlizeable 和 Parceable 的区别

  • 什么情况下选择用哪个,为什么

  • 有没有了解过别的序列化方法


RecyclerView


  • RecyclerView 的缓存机制

  • RecyclerView 和 ListView 对比

  • Recycler 是怎么进行回收和复用的

  • LayoutManager 怎么进行布局的


内存泄漏


  • 内存泄漏的常见场景

  • 怎么检查内存泄漏


Binder


  • Binder 原理

  • Binder 比起其他跨进程的通信方式好在哪

网络

  • HTTP 报文格式

  • HTTP 在网络体系架构中的意义是什么

  • HTTPS 和 HTTP 的区别

  • 对称加密和非对称加密

  • TLS 四次握手的过程

  • CA 是干什么的

  • 校验证书的详细过程

  • HTTPS 一定是安全的吗

  • TCP 和 UDP 的区别(高频)

  • HTTP1.0,1.1,2.0 的区别

  • 有没有实际了解过 HTTP2.0 到底比 1.1 快了多少

  • 详细解释“Keep-Alive”有什么用

  • UDP 为什么比 TCP 快(存在误导,UDP 不一定比 TCP 快)

  • UDP 可以进行广播为什么 TCP 不行

  • 为什么要三次握手,四次挥手

  • 为什么握手仅需要三次而回收需要四次

  • HTTP 是基于什么协议的(一般来说是 TCP,可以借此引出 QUIC,KCP 等协议进行进一步的探讨)

操作系统

  • 线程间通信方式

  • 线程的几种状态

  • 进程间通信方式

  • 线程和进程的区别

设计模式

设计模式没有必要全都看,重要的是你会的几种设计模式他们的优点是什么,缺点是什么,在哪些常见的地方用到了他们,要能够举一反三,例举几个我面试时常说的。


  • 单例——单例一定要特别熟,特别高频,尤其是 DCL 为什么这么写,synchronized 为什么那么加,有什么讲究,volatile 在这个地方起到了什么作用,不加会导致什么问题。静态内部类的单例怎么能够保证线程安全。等等。

  • Builder——常见,知道什么时候用就行了

  • 责任链——要能扩展到 Android 的事件分发,okhttp 的拦截链等。

  • 观察者模式——要能知道 Android 中哪些地方用到了观察者,什么情况下使用。比如广播机制就使用的是观察者

  • 享元模式——要知道享元模式是为了避免重复创建对象而导致的开销,Message,String,线程池都是这样的设计思想。

  • Adapter——要能想到 ListView 和 RecyclerView,以及为什么他们设计的时候要用 Adapter

  • 代理模式——静态代理,动态代理

算法(手撸代码)

就算法来说,其实大部分公司(除了字节和腾讯)问的都不是很难,一般都集中在数组和链表上,基本就是剑指 offer 难度甚至直接就是原题。


  • 移动零——一个数组有 0 和其他数,不更改原本其他非 0 数字的顺序,把 0 都移到数组最末位(猿辅导)

  • 手写栈(伴鱼)

  • 数组中只出现一次的数字——剑指原题(伴鱼)

  • 判断链表是否有环(顺丰,腾讯,美团)

  • 有环链表环的长度(腾讯)

  • 反转链表(腾讯)

  • 一道贪心——题目太长了且没有原题(腾讯)

  • 字符串转数字(百度)

  • 回字形打印数组(老虎证券)

  • [插入 5](


)(老虎证券)


  • 斐波那契数列(美团)

  • 手写 DCL 单例(字节)

  • 二叉树路径和——从根节点到叶子节点是否有一个路径之和等于给定值(字节)

  • 最短子数组长度——滑动窗口(字节)

  • 手写观察者模式(字节)

  • 两个栈实现队列(字节)

  • 获取一个 VIewGroup 的最深深度(美团)

设计题

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android开发1年背了几十份面经还是连挂了6个面试,拿到最终字节腾讯offer后我总结了这些坑点