BAT等大厂Android岗面经分享,降妖除魔金刚经,一名毕业三年的女程序媛面试头条经验

(7).如何判断一个对象是否被回收,有哪些GC算法,实际虚拟机使用最多的是什么GC算法? (美团)

(8).Jvm内存 结构说一下。

a.描述JVM内存模型。(东方头条)

(9).JVM DVM ART的区别(360)

(10).描述GC机制。Class会不会回收?用不到的Class怎么回收?(东方头条)

(11).StackOverFlow与OOM的区别?分别发生在什么时候,JVM栈中存储的是什么,堆存储的 是什么?(美团)

(12).Java虚拟机和Dalvik虚拟机的区别?

(13).请描述new一个对象的流程。

(14).Java对象会不会分配到栈中?

(15).String, Stringbuffer, StringBuilder 的区别是什么?(东方头条)

a.String StringBuffer StringBuilder在进行字符串操作时的效率;这里主要考察String在内存 中是如何创建的。(字节跳动)

(16).String为什么是不可变的?(字节跳动)

a.String为什么设计成final的?

(17).final 、finally、finalize 区别。

(18).抽象类和接口的区别。

(19).重载和重写的区别 (京东)

(20).什么是值传递和引用传递,Java 是值传递还是引用传递?

(21).String s = new String(“”);创建了几个对象?

(22).java里 equals和== 区别。

(23).try-catch-finally,try里有return,finally还执行么?

(24).Excption与Error区别。

(25).Static class 与non static class的区别。

(26).PathClassLoader与DexClassLoader的区别是什么?

(27).什么是双亲委托机制,为什么需要双亲委托机制?

(28).描述JVM类加载过程。

(29).动态代理是什么?如何实现?

(30).动态代理的方法怎么初始化的?(字节跳动)

(31).CGLIB动态代理(字节跳动)

(32).说说反射的应用场景,哪些框架,原理是什么?

(33).Java泛型的特点与优缺点,泛型擦除是怎么回事?

(34).List能否转为List。

(35).泛型super和extends的区别。

a.说法2:Java 的泛型,<? super T> 和 <? extends T> 的区别。

(36).为什么IO是耗时操作?

1.3 并发编程


(1).假如只有一个cpu,单核,多线程还有用吗 ?(美团)

(2).sychronied修饰普通方法和静态方法的区别?什么是可见性?

(3).锁分哪几类?

(4).CAS无锁编程的原理。(字节跳动)

(5).ReentrantLock的实现原理。

(6).AQS原理 (小米 京东)

(7).Synchronized的原理以及与ReentrantLock的区别。(360)

(8).Synchronized在JDK1.8之后做了哪些优化 (京东)

(9).Synchronized static与非static锁的区别和范围(小米)

(10).volatile关键字干了什么?(什么叫指令重排) (字节跳动)

(11).volatile 能否保证线程安全?在DCL上的作用是什么?

(12).volatile和synchronize有什么区别?(B站 小米 京东)

(13).两个线程用不同的对象,怎么样?(字节跳动)

(14).什么是守护线程?你是如何退出一个线程的?

(15).sleep 、wait、yield 的区别,wait 的线程如何唤醒它?(东方头条、字节跳动)

(16).sleep是可中断的么?(小米)

(17).实现非阻塞式生产者消费者(字节跳动)

(18).如何开启一个线程,开启大量线程会有什么问题,如何优化?(美团)

(19).线程生命周期。

(20).ThreadLocal是什么?

(21).AyncTask的原理。

(22).AsyncTask中的任务是串行的还是并行的?

(23).线程池管理线程原理。

(24).线程池的相关参数,有哪些类型的线程池,线程池任务如何调度,任务队列只是先进先出 的队列吗,任务有优先级怎么办,知道优先级反转吗? (美团)

(25).有三个线程T1,T2,T3,怎么确保它们按顺序执行?

(26).Android中操作多线程的方式有哪些?

(27).怎样获取当前线程是否是主线程 (字节跳动)

(28).HandlerThread是什么?

(29).线程间如何通信?

(30).RxJava线程切换原理,RxJava1和RxJava2的区别有哪些?

1.4 网络编程


(1).描述TCP三次握手与四次挥手的过程与意义。

a.TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

b.三次握手为什么不是两次一次 五次六次(美团)

(2).TCP与UDP的区别是什么?(腾讯)

(3).Http与Https的关系是什么?

(4).SSL握手的过程。

(5).Http的post与get请求的区别是什么?

(6).输入一个URL到浏览器发生了什么?(美团)

二、Android体系

===========

(1). Acitvity的生命周期是什么样的?

a. Acitvity的生命周期,如何摧毁一个Activity? (美团)

(2). Activity的4大启动模式,与开发中需要注意的问题,如onNewIntent() 的调用;

a. Activity的启动模式,区别 (美团)

b. singleInstance如果不指定栈名,是怎么分配的?(字节跳动)

(3). Intent显示跳转与隐式跳转,如何使用?(美团)

(4). Activity A跳转B,B跳转C,A不能直接跳转到C,A如何传递消息给C?(美团)

(5). Activity如何保存状态的?

(6). 请描述Activity的启动流程,从点击图标开始。(B站)

a. APP是怎么启动的?

. 启动一个Activity的流程分析

(7). Service的生命周期是什么样的?

a. Service两种生命周期以及区别

(8). 你会在什么情况下使用Service?

(9). startServer和bindServier的区别?(美团)

(10). Service和Thread的区别?

(11). IntentService与Service的区别?

(12). ContentProvider如何自定义与使用场景是什么?

(13). BroadcastReciver的静态注册与动态注册的区别?

(14). 广播的分类与工作原理

(15). 可以在onReceive中开启线程么,会有什么问题?

(16). 什么是有序广播?

(17). Application、Activity、Service中context的区别?能否启动一个activity、dialog?

(18). Fragment的生命周期? (美团)

(19). Fragment的构造函数为啥不让传参?(B站)

(20). Fragment add与replace的区别,分别对Fragment的生命周期影响(美团)

三、View System

=============

(1).View绘制流程与自定义View注意点。(东方头条、美团)

Android中的每一个UI控件都是集成自View,然后这些View都具有相同的绘制流程,必须经 过measure,layout和draw.

view的绘制流程是在Window添加过程中,ViewRootImpl类的setView方法开始的

(2).在onResume中可以测量宽高么

(3).事件分发机制是什么过程?(东方头条)

(4). 冲突怎么解决?(东方头条)

(5).View分发反向制约的方法?(字节跳动)

(6).自定义Behavior,NestScroll,NestChild。(东方头条)

(7).View.inflater过程与异步inflater(东方头条)

(8).inflater为什么比自定义View慢?(东方头条)

(9).onTouchListener onTouchEvent onClick的执行顺序。(58 京东)

(10).怎么拦截事件 onTouchEvent如果返回false onClick还会执行么?(58 京东)

(11).事件的分发机制,责任链模式的优缺点 (美团)

(12).动画的分类以及区别(车和家)

(13).属性动画与普通的动画有什么区别?(车和家)

(14).插值器 估值器的区别(车和家)

(15).RecyclerView与ListView的对比,缓存策略,优缺点。(美团)

(16).WebView如何做资源缓存?(字节跳动)

(17).WebView和JS交互的几种方式与拦截方法。(字节跳动)

(18).自定义view与viewgroup的区别

(19).View的绘制原理

(20).View中onTouch,onTouchEvent和onClick的执行顺序

(21).View的滑动方式

(22).invalidate() 和 postInvalicate() 区别

(23).View的绘制流程是从Activity的哪个生命周期方法开始执行的

(24).Activity,Window,View三者的联系和区别

(25).如何实现Activity窗口快速变暗

(26).ListView卡顿的原因以及优化策略

(27).ViewHolder为什么要被声明成静态内部类

(28).Android中的动画有哪些? 动画占用大量内存,如何优化

(29).自定义View执行invalidate()方法,为什么有时候不会回调onDraw()

(30).DecorView, ViewRootImpl,View之间的关系,ViewGroup.add()会多添加一个ViewrootImpl 吗?

(31).如何通过WindowManager添加Window(代码实现)?

(32).为什么Dialog不能用Application的Context?

(33).WindowMangerService中token到底是什么?有什么区别

(34).RecyclerView是什么?如何使用?如何返回不一样的Item

(35) .RecyclerView的回收复用机制

(36) .如何给ListView & RecyclerView加上拉刷新 & 下拉加载更多机制

(37) .如何对ListView & RecycleView进行局部刷新的?

(38) .ScrollView下嵌套一个RecycleView通常会出现什么问题?

(39) .一个ListView或者一个RecyclerView在显示新闻数据的时候,出现图片错位,可能的原因 有哪些 &

如何解决?

(40).Requestlayout,onlayout,onDraw,DrawChild区别与联系

(41) .如何优化自定义View

(42) .Android属性动画实现原理,补间动画实现原理

四、Android FrameWork

===================

1.Android中多进程通信的方式有哪些?

a.进程通信你用过哪些?原理是什么?(字节跳动、小米)

2.描述下Binder机制原理?(东方头条)

3.Binder线程池的工作过程是什么样?(东方头条)

4.Handler怎么进行线程通信,原理是什么?(东方头条)

5.Handler如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)

6.handler.post(Runnable) runnable是如何执行的?(字节跳动、小米)

7.handler的Callback和handlemessage都存在,但callback返回true handleMessage还会执行么?(字节跳动、小米)

8.Handler的sendMessage和postDelay的区别?(字节跳动)

9.IdleHandler是什么?怎么使用,能解决什么问题?

10.为什么Looper.loop不阻塞主线程?

a.Looper无限循环为啥没有ANR(B站)

11.Looper如何在子线程中创建?(字节跳动、小米)

12.Looper、handler、线程间的关系。例如一个线程可以有几个Looper可以对应几个Handler? (字节跳动、小米)

13.如何更新UI,为什么子线程不能更新UI?(美团)

14.ThreadLocal的原理,以及在Looper是如何应用的?(字节跳动、小米)

15.Android 有哪些存储数据的方式?

16.SharedPreference原理,commit与apply的区别是什么?使用时需要有哪些注意?

17.如何判断一个 APP 在前台还是后台?

18.如何做应用保活?

19.一张图片100x100在内存中的大小?(字节跳动)

20.Intent的原理,作用,可以传递哪些类型的参数?

21.如果需要在Activity间传递大量的数据怎么办?

22.打开多个页面,如何实现一键退出?

23.LiveData的生命周期如何监听的?(B站)

五、性能优化专题

========

1.App稳定性优化

2.App启动速度优化

3.App内存优化

4.App绘制优化

5.App瘦身

6.网络优化

7.App电量优化

8.安卓的安全优化

9.为什么WebView加载会慢呢?

10.如何优化自定义View

11.FC(Force Close)什么时候会出现?

12.Java多线程引发的性能问题,怎么解决?

13.TraceView的实现原理,分析数据误差来源。

14.是否使用过SysTrace,原理的了解?

15.mmap + native 日志优化?

六、三方源码理解

========

1.Glide :加载、缓存、LRU 算法 (如何自己设计一个大图加载框架) (LRUCache 原理)

2.EventBus

3.LeakCanary

4.ARouter

5.插件化(不同插件化机制原理与流派,优缺点。局限性)

6.热修复

7.RXJava (RxJava 的线程切换原理)

8.Retrofit (Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的)

9.OkHttp

七、文末

====

以上部分题目也是自己在复习期间在网上找的一些大厂面试题。我自己也将这些面试题做了解析整理并归纳成了一个文档,由于篇幅原因就没在文章里做展示了。好记性不如烂笔头,永远抱着一个“我应该会”的心态去刷面试题,在自己脑子过了一篇,感觉回答得上来,但往往一真跟面试官对上线就会卡壳,还是建议把每个面试题都去写一遍,再去做延伸。当你能将每一道面试题都能富有逻辑性地写出来的时候,那在面试的时候就绝对没有问题了。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

写在最后

最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

们去适应环境,而不是环境来适应我们!**

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

[外链图片转存中…(img-vZhllb3W-1712453623655)]

[外链图片转存中…(img-rA2oSMFa-1712453623655)]

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值