Android面试题,看完99%的人都学会了

2021年09月15日 阅读数:1
这篇文章主要向大家介绍Android面试题,看完99%的人都学会了,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
  1. Native、H五、RN页面混合跳转时,页面清栈的桥实现java

  2. 页面混编框架的设计与难点android

  3. RN 通用容器的设计git

  4. 用户行为监控方案设计面试

  5. JS 错误治理方案算法

  6. RN 页面对用户行为的监控与JS错误治理,在问题发现有什么收获、优化点设计模式

  7. 美团 RN 相对于原生 RN 的有什么优点

3面 - 基础加深

  1. 大家公司 Picasso 有使用过没,介绍下数组

  2. Picasso 单引擎,在多 Bundle 的状况下怎么保证数据隔离的?安全

  3. 美团 RN 与 Picasso 的区别

4.省略若干项目相关问题...markdown

  1. RN 的页面追踪埋点如何实现的多线程

  2. 美团首页是不是 RN 页面,MTFlexBox 原理

  3. synchronized 修饰 static 方法、普通方法、类、方法块区别

  4. synchronized 底层实现原理

  5. volatile 的做用和原理

  6. 一个 int 变量用 volatile 修饰,多线程去操做 i++,是否线程安全?如何保证 i++ 线程安全?AtomicInteger 的底层实现原理?

使用 AtomicInteger 可使 i++ 线程安全

  1. 说下对线程池的理解,以及建立线程池的几个关键参数

  2. Handler 机制又问了一遍...

  3. 介绍下 Binder 机制,与内存共享机制有什么区别?
  • 为何Android要采用Binder做为IPC机制? - Gityuan的回答
  • Android匿名共享内存(Ashmem)原理
  • 图文详解 Android Binder跨进程通讯的原理
    1. Java 集合,介绍下ArrayList 和 HashMap 的使用场景,底层实现原理
  1. ArrayList 与 LinkedList 的区别

  2. 算法 - 两个有序的链表的合并

  3. 算法 - 输入一个字符串(不含和.)、正则(字母、和.任意组合),判断字符串是否合法

  4. 简单介绍下,项目中遇到的一些技术难点

4面 - 交叉面

  1. 下面的代码, str 值最终为多少?换成 Integer 值又为多少,是否会被改变?
  • 考点:Java 值传递 (第 2 题相同)。编写代码测试,在 changeValue() 方法中修改入参,并不会改变以前的值;
  • 原理 :Java 程序设计语言老是采用按值调用,方法获得的是全部参数值的一个拷贝,即方法不能修改传递给它的任何参数变量的内容。基本类型参数传递的是参数副本,对象类型参数传递的是对象地址的副本;
  • 题解:在 changeValue() 中,对于对象类型参数,直接修改的是对象地址副本的值,因此以前变量的地址并未被修改!若修改的是对象实例里面的某个值,以前变量则会被修改
public void test() {
    String str = "123";
    changeValue(str); 
    System.out.println("str值为: " + str);  // str未被改变,str = "123"
}

public changeValue(String str) {
    str = "abc";
}
  1. 下面的代码,再次使用对象 student 是否须要判空?

Java 中方法参数的使用状况总结:

  • 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型);
  • 一个方法能够改变一个对象参数的状态;
  • 一个方法不能让对象参数引用一个新的对象
public void test()  {
    Student student = new Student("Bobo", 15);
    changeValue1(student);   // student值未改变,不为null! 输出结果 student值为 name:Bobo、age:15
    // changeValue2(student);  // student值被改变,输出结果 student值为 name:Lily、age:20
    System.out.println("student值为 name: " + student.name + "、age:" + student.age);
}

public changeValue1(Student student) {
    student = null;
}

public static void changeValue2(Student student)  {    
     student.name = "Lily";    
     student.age = 20;
}
  1. Java 的几种引用类型,弱引用的使用场景?

  2. 线程池分类,解释下几个核心参数?

  3. APK 的打包过程是什么?
  • aapt 工具打包资源文件,生成 R.java 文件
  • aidl 工具处理 AIDL 文件,生成对应的 .java 文件
  • javac 工具编译 Java 文件,生成对应的 .class 文件
  • 把 .class 文件转化成 Davik VM 支持的 .dex 文件
  • apkbuilder 工具打包生成未签名的 .apk 文件
  • jarsigner 对未签名 .apk 文件进行签名
  • zipalign 工具对签名后的 .apk 文件进行对齐处理
  1. APK 为何要签名?是否了解过具体的签名机制?

Android 为了确认 apk 开发者身份和防止内容的篡改,设计了一套 apk 签名的方案保证 apk 的安全性,即在打包时由开发者进行 apk 的签名,在安装 apk 时Android 系统会有相应的开发者身份和内容正确性的验证,只有验证经过才能够安装 apk,签名过程和验证的设计就是基于非对称加密的思想。
Android 在 7.0 之前使用的一套签名方案:在 apk 根目录下的 META-INF/ 文件夹下生成签名文件,而后在安装时在系统的 PackageManagerService 里进行签名文件的验证。
从 7.0 开始,Android 提供了新的 V2 签名方案:利用 apk(zip) 压缩文件的格式,在几个原始内容区以外增长了一块用于存放签名信息的数据区,而后一样在安装时在系统的 PackageManagerService 里进行 V2 版本的签名验证,V2 方案会更安全、使校验更快安装更快。
固然 V2 签名方案会向后兼容,若是没有使用 V2 签名就会默认走 V1 签名方案的验证过程。

  1. 为何要分 dex ?SDK 21 不分 dex,直接所有加载会不会有什么问题?

求路过大神们的正解...

  1. 常见的设计模式有哪些?你提供的 JS 错误治理方案,用了哪些设计模式?

  2. 算法 - 二叉树层序遍历,奇数层逆序遍历节点,偶数层正序遍历

  3. 将来 3~5 年的规划是什么?

  4. 你以为你的优势是什么?缺点是什么?

  5. 如今的职级,近期的绩效如何

5面 - 部门 TL

  1. 商业化部门相关的业务介绍 (核心大概是商业化部门壁垒高,培养一我的成本高,比作其余业务更有含金量,能够积累不少业务策略知识),而后让问他问题

  2. 将来几年的规划?生活上有什么规划?

  3. 你以为你的优势是什么?缺点是什么?

  4. 如今的职级,近期的绩效如何

  5. 为何给你这么好的绩效?

  6. 有没有看其余机会?阿里面试的状况

6面 - 大 Boss

  1. 算法 - 数组插入,考虑扩容

  2. 在项目的遇到的比较有挑战的事是什么?

    最后

上面这些公司都是时下最受欢迎的互联网大厂,他们的职级、薪资、福利也都讲的差很少了,相信你们都是有梦想和野心的人,内心多少应该都有些想法。

也相信不少人也都在为即将到来的金九银十作准备,也有很多人的目标都是这些公司。

我这边有很多朋友都在这些厂工做,其中也有不少人担任过面试官,上面的资料也差很少都是从朋友那边打探来的。除了上面的信息,我这边还有这些大厂近年来的面试真题及解析,以及一些朋友出于兴趣和热爱一块儿整理的Android时下热门知识点的学习资料

点击这里加入个人圈子吧

以上都放在了咱们的交流群里面,群共享文件还会不定时更新咱们新的资料。群里有大厂的大牛也有普通码农,你们遇到问题均可以一块儿探讨交流,也能够潜水。

部分群文件:
Android面试题,看完99%的人都学会了
Android面试题,看完99%的人都学会了
Android面试题,看完99%的人都学会了