android面试题总结


链接:一年经验Android社招经验贴—字节、腾讯、美团offer_笔经面经_牛客网
来源:牛客网
 

  • 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原理

      • 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难度甚至直接就是原题。

  • 设计题

    设计题这个部分其实大部分并没有标准答案,更多的是看以你的知识量能够想到什么比较好的解决方案。

    • 设计进程安全的SharedPreference(字节,腾讯

    • 设计一个gif加载框架(微博

    • 一个进程只有读操作,一个进程只有写操作,你怎么设计(微博

    • 如果一个APP需要有闲时加载任务的能力,你怎么设计(美团

    • 让你设计一个流式标签布局你怎么做,有哪些要考虑的点(最右

    • 设计一个下拉刷新的RecyclerView你有几种方法(美团

    • APP使用经常会有弱网环境,怎么确保APP数据的即使同步更新以及正确性(顺丰)

    • 让你设计一个push的框架,你会怎么设计,考虑到哪些问题(百度

    • 设计一个检测内存泄漏的框架(腾讯

    • 设计一个事件总线(最右

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值