首页 > 其他分享 >2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)

时间:2023-06-19 15:02:20浏览次数:39  
标签:面试题 Java 爱奇艺 区别 快手 如何 线程 Android


小红书Android一面

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_移动开发

Java篇

  • 静态变量和实例变量的区别
  • 静态变量有static关键字修饰
  • 静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用,也就是说,你创建了多个对象,他们共用了一个静态变量,而实例对象是属于自己的独有的,不会被共享!(可以Class.var使用),位于方法区
  • 实例变量必须创建对象后,才可以通过这个对象来使用。即new Class().var,位于堆区
  • “==” & equals()
  • 浅拷贝 & 深拷贝
  • HashMap , 扩容机制
  • 多个线程如果共享多个资源,需要怎么保证安全
  • volatile,CAS/ABA

Android篇

  • 事件的分发机制
  • Handler原理
  • TCP UDP
  • Kotlin和Java的区别

快手 Android

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_移动开发_02

一面:

  • 一个平面上n个点,找出k条线穿过max点数
  • 100位面试者,每人要四轮面试,怎么分配面试官

二面:

  • 手撕:最长单调区间
  • Android/ 布局优化
  • Activity启动模式
  • RecyclerView和ListView区别
  • Handler机制,loop方法为何不会造成ANR
  • View绘制流程
  • SingleTop和standard启动模式下,生命周期回调有何不同
  • onStart和onResume区别
  • Java/ 面向对象三大特性
  • Array和Linked区别
  • HashMap底层
  • 进程间通信方式
  • equals和==区别
  • 线程间加锁的方式
  • 知道啥设计模式
  • synchronized的不同使用
  • 异常
  • 线程池
  • 创建线程的方式
  • OS/ 死锁
  • 网络/ tcp和udp的区别

爱奇艺Android工程师

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_移动开发_03

一面:

  • 介绍项目
  • Android布局嵌套深有什么问题
  • kotlin协程
  • HashMap原理
  • 算法:手写快排

二面:

  • Activity启动模式
  • Activity A → B的生命周期在这四种启动模式下的状态
  • 广播类型
  • 有序广播如何实现的按顺序收到广播
  • 持久化存储方式
  • SharedPreferences的格式
  • xml解析方式
  • json与xml的区别,json为什么比xml更好
  • Android view绘制流程
  • surfaceView
  • sp, dp, px的区别
  • 机型大小适配
  • 适配语言
  • ANR 什么时候出现,如何排查
  • Android动画
  • startService与bindService的区别
  • Service保活方式
  • java泛型,<? extends T>能否add元素
  • 重写equals方法需要重写hashCode方法吗
  • ThreadLocal
  • wait,sleep,yield,join的区别
  • 算法1:字符串全排列
  • 算法2:删除链表中倒数第n个节点

4. 微信视频号安卓工程师

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_android_04

Android:

  • 讲一下Android发生Crash的整体流程。Android在遇到非可检异常时就会触发该线程的 unCatchExcepttionHandler中的unCatchException()方法,最终在该方法的 process.kill()方法中杀死该进程,appCrash完成。
  • Native层Crash是如何捕获到的?Android NativeCrash发生时会向该进程发出错误的不可处理信号,Linux系统收到该信号后无法处理便会杀死进程,发生Crash。Android当中捕获的方法主要是使用了Linux系统下的核心转储机制,在发生Crash前系统会记录下当前的上下文信息,形成tombstone文件,存储起来,再杀死线程,这个tombstone文件就是我们要分析的对象。
  • Java层Crash是如何捕获到的?JavaCrash的捕获有几个关键部分
  • RuntimeInit类中的LoggingHandler类,用于打印日志时使用
  • RuntimeInit类中的KillApplicationHandler类,是一个系统默认的 UncaughtExceptionHandler,用于发生JavaCrash时kill掉进程
  • RuntimeInit类中的commonInit方法,其内部就是初始化了所有线程的set UncaughtExceptionHandler()。因此在发生非可检异常时,就会调用该线程的UncaughtExceptionHandler.unCatchException方法,在该方法内部进行捕获。
  • 如何做到发生异常时不会杀死APP?在 UncaughtExceptionHandler.unCatchException方法调用Looper进行死循环可以。
  • 讲一下Handler机制
  • Looper的定时器是用如何实现的?通过nativePollOnce(ptr, nextPollTimeoutMillis);定时睡眠nativeWake(mPtr);进行唤醒
  • APK包里有什么?主要有5个部分:
  • dex文件:.class文件编译后的产物
  • Assets:资源文件,如图片等,主要是通过AssetsManger来进行加载。
  • Resource:资源文件,layout等,通过R.xxxxxx.id来进行引用
  • Library:so库引用目录
  • META-INF:APK 签名有关的信息
  • APP在运行时是通过什么来获取到layout文件的?
  • 讲一下surfaceview跟textview。
  • Activity A 启动 Activity B 时,他们在同一个栈的情况下生命周期以及执行顺序是怎么样的?
  • Destroy()方法是什么时候调用的?
  • 调用finish()方法。
  • Handler中已经没有要处理的message。 满足这两个条件才会调用。

Java:

  • 有什么线程同步的机制?
  • volatile关键字讲一下。
  • volatile如何实现可见性?
  • synchronize如何实现可见性?
  • volatile防止指令重排代码级别如何实现?

操作系统:

  • 讲一讲操作系统内核态跟系统态的了解。
  • 操作系统内核是什么?
  • 操作系统内核本质上就是操作系统代码的常驻机构。
  • 操作系统内核就是管理所有代码和数据结构的集合。
  • 操作系统内核是软件和硬件之间的媒介。
  • 为什么操作系统要有内核态、系统态的存在?
  • Linux有什么信号?
  • sigill信号在什么情况下会触发?

算法题:

  • 给一个数组,每个值表示的是在坐标系中的点下标,找出该数组在组成的最长直线为多少,相同最长长度直线有几条?
  • 给一段数字,给出其可能组成的所有IP地址。

抖音社交Android工程师

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_android_05

一面:

  • 项目
  • volitale与synchronized的区别
  • 手写单例
  • 匿名内部类如何持有外部类对象
  • 内存泄漏的概念
  • 内存泄漏的场景
  • 内存泄漏检测的工具
  • handler原理,sendMessage与sendMessageDelay如何保证Message放入MessageQueue中的顺序
  • 两个Message相隔5秒,这5秒内线程会一直阻塞吗
  • 自定义 View如何特殊处理wrap_content,padding的实现
  • MVVM和MVP 的区别(引出了一系列问题,不是很了解就直接说不了解比较好)
  • LiveData与RxJava的区别
  • LiveData生命周期感知如何实现
  • 介绍RxJava
  • https与http的区别,中间人如何修改密钥
  • 算法:二叉树z字形打印

二面:

  • 项目
  • final、finally与finalize的区别
  • java开启一个线程的方式
  • Thread.start()与直接调用run()的区别
  • Java默认提供了几种线程池
  • thread{ i++ }执行10次结果,如何让i最后等于10
  • synchronized与reentrantlock区别
  • 死锁
  • 悲观锁乐观锁
  • gc垃圾回收
  • 垃圾标记阶段,Python如何实现的断开循环引用
  • Retrofit返回的是什么数据类型
  • 服务器返回的数据有哪些类型,为什么不能用xml类型返回
  • 请求数据这个过程发生了什么
  • get与post请求的区别,get与post携带数据的区别
  • java注解
  • kotlin扩展函数原理
  • 算法:两个链表相加

三面:

  • main方法执行之前发生了什么
public class Main {`    `public static void main(String[] args) {`        `System.out.println(Main.class.getName());``   ``   `    `}``}
  • System.out.println(“a”)将字符输出到屏幕发生了什么
  • 双击QQ发生了什么
  • 浏览器输入url发生了什么
  • 根据前序遍历和中序遍历输出后序遍历
  • 如果排期只有一周的任务,但是以我的能力需要两周才能完成,这个时候你会怎么办。
  • k个一组反转链表

抖音电商Android工程师

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_面试_06

一面:


  • 实习学到的架构
  • MVVM
  • Dagger原理
  • livedata原理
  • 进程和线程
  • 操作系统IO模型
  • 进程通信方式
  • 管道通信原理
  • TCP协议如何实现可靠传输
  • UDP如何实现可靠传输
  • java创建线程
  • 线程池原理
  • 线程池拒绝策略
  • synchronized与reentrantlock实现方式的区别
  • AQS原理
  • handler原理
  • Retrofit原理
  • 算法: 二叉树右视图 — 非递归实现

二面:

  • Navigation的优缺点
  • 如何实现的自定义navigate方法切换fragment,如何让被覆盖的fragment感知到生命周期
  • gc如何判断垃圾对象
  • 成员变量与局部变量的区别,局部变量的值一定是存放在堆中吗()
  • jvm类加载的时机
  • jvm类加载过程
  • 双亲委托机制是什么
  • 双亲委托机制什么时候会被破坏
  • 内存泄漏是什么
  • volatile的作用
  • 写一个死锁
  • 算法:判断A是否是B的子树

三面:

  • 自己是如何学习Android的
  • 实习过程中做的需求说一下
  • 实习过程中的难点说一个
  • 实习过程中和哪些人接触的比较多
  • 如何和别人沟通的
  • 实习的收获
  • 挑一个项目说一下
  • 里氏替换原则
  • http状态码
  • http多路复用
  • 数据库
  • 拿了哪些offer
  • 算法 汉字表示的数字转成阿拉伯表示。

小米android开发

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_移动开发_07

  • http与https的区别。
  • Java构造器工作工程。
  • Java中的引用类型有哪些。
  • http,http1.1,http2.0有啥区别。
  • TCP/IP最大容量的意义是什么?
  • 还有Integer与int类型区别?各自怎么比较大小?
  • 还有垃圾回收机制还有final的用法
  • 为什么HashMap在1.8中采用了红黑树?你能说下啥是红黑树吗?啥是平衡二叉树?啥是二叉搜索树?啥是满二叉树?
  • Java1.7采用数组加链表与1.8采用红黑树有啥区别?
  • HashMap 线程不安全原因是啥?分版本作答
  • 如果线程安全的话 要用哪个?我说Hashtable。他说HashTable效率太低,怎么安全又效率高?
  • 对称加密与非对称加密?
  • SSL是干嘛的?

美团移动端一面

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_移动开发_08

  • jvm内存模型
  • new 对象的过程
  • 类加载过程
  • ClassLoader源码
  • final关键字
  • 匿名内部类
  • 讲下垃圾回收算法
  • LinkedList && ArrayList
  • hashMap
  • 常用注解,spring中的注解
  • 锁,synchronized底层原理
  • https && http
  • 浏览器输入地址后的过程
  • 状态码 303 304
  • 你知道的设计模式
  • 单例模式 说了双重校验锁,静态内部类 ,不同场景下如何选择
  • 双重校验锁为什么要两次判空
  • volatile,指令重排

面试题汇总

2246页《2022最新Android 大厂高频面试题解析大全》(持续更新中~)

内容概要:包括 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈!内容特点:条理清晰,含图像化表示更加易懂。

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_程序人生_09

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_android_10


2021版《Android高级开发面试题》2.0

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_职场和发展_11

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_职场和发展_12

1932页《2022年Android中高级面试题汇总》(持续更新中~)

Android开发面试题的资料一直在持续的更新,根据目前所能收集到的数据进行整理的一系列资料,同事也欢迎广大朋友提供资料,如后续有更新也会继续进行补充。

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_职场和发展_13


2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_面试_14


有了这套学习资料,坚持刷题一周,你就会发现自己的知识体系有明显的完善,离大厂Offer的距离更加近。

最后

ok,终于啰嗦完了,不过句句发自肺腑,真心希望能帮助到一些同学。

祝大家都能在心仪的公司,拿着不错的薪水,开心的写bug~

2022年Android大厂面试题(面经)总结(小红书、快手、爱奇艺、微信、抖音.....)_面试_15


标签:面试题,Java,爱奇艺,区别,快手,如何,线程,Android
From: https://blog.51cto.com/u_16163442/6513818

相关文章

  • 【Android面试】2023年Android中高级最全面试题,轻松拿offer
    前言2023年的金三银四来了,不知道大家准备好了没?对于程序员而言,无论是想加快个人技能成长速度,或是想要升职涨薪,都需要不断进阶,跳槽到规模与业务更大、并且有成熟的技术成长体系的公司当中去。而想要跳槽成功,面试可以说是决定性因素。这里给大家整理了一份935页的《2023年Android中高......
  • 2022最新 Android 中高级面试题汇总(含答案解析)
    准备面试少不了Android面试题复习,面试题也需要有方法,高效的进行复习,所以给大家分享一份《2022最新Android中高级面试题汇总》,基本涵盖了Android中高级工程师面试必备知识点,希望可以帮助一些想要跳槽涨薪的朋友更好、更高效的复习,实现跳槽涨薪。Android中高级面试题主要包含知识......
  • 年后上来面试了13家企业Android岗位,面试题整理
    先卖个关子,如果你是面试官,你希望招一个什么样的人进来?如果这个问题搞明白了,那么可以说测试岗位的面试,就变得非常轻松了。按照一般的惯例,面试官都会让你自我介绍,介绍你的项目经验,询问你的技术能力,这些都是常规的问题。我不去说什么固定的范本什么的,我就以我以前面试别人的情景为例,具......
  • 得到、微信、美团、爱奇艺APP组件化架构实践
    一、背景随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多。此过程中,你是否有过以下烦恼?项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍?改了一行代码或只调了一点UI,就要run整个项目,再忍受一次10分钟?合代码经常发生冲突?很烦?被人偷偷改了自己模块的代......
  • 多线程面试题
    1.多线程的主要参数有哪些,有什么用?1)corePoolSize(核心线程数)指的是长期存活的线程数。比如地主家的长工,无论这一年活多还是活少,都不会被辞退。2)maximumPoolSize(最大线程数)指的是线程池允许创建的最大线程数,其中包含核心线程数(最大线程数>=核心线程数)。比如地主家临时活太多,长......
  • Java集合框架常见面试题
    剖析⾯试最常⻅问题之Java集合框架集合概述Java集合概览从下图可以看出,在Java中除了以Map结尾的类之外,其他类都实现了Collection接⼝。并且,以Map结尾的类都实现了Map接⼝。说说List,Set,Map三者的区别?List(对付顺序的好帮⼿):存储的元素是有序的、可重复的......
  • react经典面试题解析--持续更新--day01
    一、类组件和函数组件的区别(面试常考)简单理解(所有同学都要掌握)1、类组件有生命周期,函数组件没有2、类组件需要继承Class,函数组件不需要3、类组件可以获取实例化的this,并且基于this做各种操作,函数组件不行4、类组件内部可以定义并维护state,函数组件都称为无状态了,那肯定......
  • JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)
    关键字:java面试题基本类型intlongbooleanfloatdoublechar作者:臧圩人(zangweiren)基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们的身影,在这篇文章中我们将从面试中常考的几个方面来回顾一......
  • JAVA面试题解惑系列(四)——final、finally和finalize的区别
    关键字:java面试题finalfinallyfinalize作者:臧圩人(zangweiren)final、finally和finalize的区别是什么?这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是......
  • 面试题:C语言中 printf("%d",sizeof('c')); 结果为什么是4?
    在C语言中,sizeof运算符用于获取数据类型或变量的字节大小。当您使用sizeof('c')时,它会返回字符常量'c'的字节大小。在C语言中,字符常量的类型是int,而不是char。尽管字符常量表示一个字符,但它实际上是以整数形式存储的。因此,sizeof('c')将返回4,即'c'字符常量的字节大小,这是因为......