首页 > 其他分享 >知名大厂的18道Android面试题曝光,你能回答几道?

知名大厂的18道Android面试题曝光,你能回答几道?

时间:2023-11-03 22:34:12浏览次数:34  
标签:面试题 HashMap 18 汇总 线程 二叉树 Android 节点

前言

最近一位知名大厂的Android技术主管,跟我透露了他们公司的18道超难的Android面试题,有些题小编看了都觉得很刁钻。

今天小编给大家来做个剧透,你也可以对应看一下,你能回答出来几题?

下面有面试题答案,但是我的建议是先自己思考一下,将自己的答案记下来,再去看答案,对比一下有没有出入,这样就能知道自己的不足在哪里。

1、请说一说HashMap原理,存取过程,为什么用红黑树,红黑树与完全二叉树对比,HashTab、concurrentHashMap,concurrent包里有啥?2、如何开启一个线程,开启大量线程会有什么问题,如何优化? 3、GC的流程是怎么样的?介绍下GC回收机制与分代回收策略4、Android中多进程通信的方式有哪些? 5、为什么 Android 要采用 Binder 作为 IPC 机制?6、Binder线程池的工作过程是什么样? 7、ThreadLocal的原理,以及在Looper是如何应用的?8、handler.post(Runnable) runnable是如何执行的? 9、Android 系统启动流程10、Zygote进程的启动流程 11、Intent的原理,作用,可以传递哪些类型的参数? 12、打开页面,如何实现一键退出?13、startActivity(MainActivity.this,LoginActivity.class); LoginActivity配置的launchMode是何时解析的? 14、Acitvity的生命周期,如何摧毁一个Activity?15、谈谈OkHttp框架的原理 16、 app对内存是如何限制的? 应该如何合理使用内存? 17、谈谈你对TCP 流量控制与拥塞控制的理解18、WindowMangerService中token到底是什么?token的存在意义是什么?

1、请说一说HashMap原理,存取过程,为什么用红黑树,红黑树与完全二叉树对比,HashTab、concurrentHashMap,concurrent包里有啥?

这道题想考察什么?

1、HashMap,HashTab基础原理?

2、ConcurrentHashMap相比HashMap的优点是什么?

3、Concurrent包里面有什么样的的函数?

考察的知识点

HashMap,HashTab、ConcurrentHashMap

考生如何回答
HashMap的原理

HashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每一个元素却又是一个链表的头结点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组+链表)。

知名大厂的18道Android面试题曝光,你能回答几道?_Android

HashMap中默认的存储大小就是一个容量为16的数组,所以当我们创建出一个HashMap对象时,即使里面没有任何元素,也要分别一块内存空间给它,而且,我们再不断的向HashMap里put数据时,当达到一定的容量限制时,HashMap就会自动扩容。

HashTab的原理

哈希表(Hash table,也叫散列表), 是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

哈希表hash table(key,value) 就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。而当使用哈希表进行查询的时候,就是再次使用哈希函数将key转换为对应的数组下标,并定位到该空间获取value,如此一来,就可以充分利用到数组的定位性能进行数据定位。

在使用的时候,有以下几种方式:

  • Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。
  • Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。
  • Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。
HashMap为什么要用红黑树?红黑树相对完全二叉树有有什么优点?

我们来看看红黑树的主要特性:

  • 每个节点都带有颜色属性(颜色为红或黑)的平衡二叉查找树。
  • 节点是红色或黑色。
  • 根节点是黑色。
  • 所有叶子结点都是黑色。
  • 每个红色节点必须有两个黑色的子节点(从每个叶子到根的所有路径上不能有两个连续的红色节点)。
  • 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

完全二叉树

如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。

知名大厂的18道Android面试题曝光,你能回答几道?_大厂面试_02

红黑树是平衡二叉树的一种,插入时遵循二叉树“左右”定律,

该父节点的左子节点:小于父节点中且子树中最接近父节点值得数。

该父节点的右子节点:大于父节点中且子树中最接近父节点值得数。

Concurrent包里面有什么

ConcorrenctHashMap:将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成,Segment是一种可重入锁ReentrantLock。

CopyOnWriteArrayList:CopyOnWrite并发容器用于读多写少的并发场景,线程安全的写时复制。

ReentrantLock:效果和synchronized一样,都可以同步执行,lock方法获得锁,unlock方法释放锁。ReetrantLockqubie添加了类似锁投票、定时锁等候和可中断锁等候的一些特性争用下的 ReentrantLock 实现更具可伸缩性。ReentrantLock支持公平锁,同一个线程可以多次获取同一把锁。ReentrantLock和synchronized都是可重入锁。

CountDownLatch:CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。

Semaphore:它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可实现对资源的保护。

Future:Callable接口可以看作是Runnable接口的补充,call方法带有返回值,并且可以抛出异常。runnable接口实现的没有返回值的并发编程。

CyclicBarrier:这个类是一个同步工具类,它允许一组线程在到达某个栅栏点(common barrier point)互相等待,发生阻塞,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继续执行。它非常适用于一组线程之间必需经常互相等待的情况。

由于文章篇幅有限,不能将完整面试题的答案展示出来,不过没有关系,我已经整理好,除此之外,还整理了近两年各种大厂的常见高频面试题,有需要的小伙伴,可以点击下方课程链接详细了解!!!

https://edu.51cto.com/course/32703.html

知名大厂的18道Android面试题曝光,你能回答几道?_Android_03

第一章 算法和数据结构面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_数组_04

第二章 Java核心基础面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_Android_05

第三章 Java深入泛型与注解面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_红黑树_06

第四章 Java并发编程面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_Android_07

第五章 Java虚拟机原理面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_Android_08

第六章 Java反射类加载与动态代理面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_大厂面试_09

第七章 网络编程面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_红黑树_10

第九章 高级UI面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_大厂面试_11

第十章 Framework内核解析面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_红黑树_12

第十一章 Android组件内核面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_红黑树_13

第十二章 程序性能优化与数据持久化面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_Android_14

第十三章 开源框架面试题汇总

知名大厂的18道Android面试题曝光,你能回答几道?_红黑树_15

有需要的小伙伴,可以点击下方课程链接详细了解!!!

https://edu.51cto.com/course/32703.html

标签:面试题,HashMap,18,汇总,线程,二叉树,Android,节点
From: https://blog.51cto.com/u_16163453/8174961

相关文章

  • Android程序员如何应对公司裁员后找不到工作的困境
    前言自人类社会诞生以来,失业率一直是一个无法回避的社会问题。然而,在2023年,失业率大爆发的情况却对许多人来说是一个完全意想不到的现象。头部互联网公司纷纷开始或明或暗的大规模裁员,经历如此剧烈的行业变动,程序员们压力山大,如何寻找新工作成了难题,那么面对紧迫的就业形势,该如何选......
  • Android动态代理详解
    动态代理在java里面算是一种比常用的技术,它和静态代理的区别在于静态代理需在编译的时候代理类就已经确定了,而动态代理的代理类是在运行的时候动态生成的。例如使用retrofit的时候我们只需要定义好interface:publicinterfaceGitHubService{@GET("users/{user}/repos")Ca......
  • 实例化一个新的Android Fragment的最佳实践
    内容来自DOChttps://q.houxu6.top/?s=实例化一个新的AndroidFragment的最佳实践我看到了在应用程序中实例化一个新的Fragment的两种常见做法:FragmentnewFragment=newMyFragment();和FragmentnewFragment=MyFragment.newInstance();第二种选项利用了静态方法......
  • 安卓主板_android主板_联发科MTK方案平台PCBA定制
    安卓主板是一种采用ARM架构并内置Android操作系统的嵌入式智能主板。相比于Linux,安卓主板在消费级和商用嵌入式智能终端市场非常成熟。与传统的单片机相比,安卓主板具有更高的性能和更丰富的接口,可以满足更复杂的开发和应用需求。目前,安卓主板在主流行业领域的应用方向包括AI人......
  • CF1866M Mighty Rock Tower 题解
    Problem-1866M-CodeforcesMightyRockTower-洛谷先考虑一个\(O(n^2)\)的dp设计状态:\(dp_i\)表示搭\(i\)层的期望转移:\(dp_i=dp_{i-1}\times(1-P_i)+\sum\limits_{j=i}^{n-1}dp_j\timesP_{j+1}^{j-i+1}\times(1-P_{j+1})\),显然是有后效性的,但我们展开......
  • Android 11 下拉菜单长按WiFi图标SystemUI ANR
    bug描述:(MTK)--Android11的SystemUI下拉菜单长按图标(tiles)导致SystemUI崩溃重启。10-0108:01:11.23657925833EAndroidRuntime:FATALEXCEPTION:AsyncTask#110-0108:01:11.23657925833EAndroidRuntime:Process:com.android.systemui,PID:579210-0108......
  • 史上最全的Android面试题集锦
    前言由于之前从上海离职,来到深圳找工作。然后准备面试的时候,发现网上很多Android面试题及答案整理都没有答案,在成功的拿到几家公司的offer后(虽然不是阿里、网易这种级别的公司,但对我一个毕业三年的Android开发来说,算是成功的从小公司跳到大公司)自己总结了一些最近面试过的Androi......
  • Android项目中引入aar包的新方法
    一、已过期的方法:1、把aar文件放在一个文件目录内,比如就放在工程的libs目录内;2、在app的build.gradle文件添加如下内容:(该配置和dependencies配置是一个位置级别)repositories{flatDir{dirs'libs'}}3、最后需要在dependencie......
  • 手机直播源码,Android Shape设置背景
    手机直播源码,AndroidShape设置背景设置背景时,经常这样android:background=“@drawable/xxx”。如果是纯色图片,可以考虑用shape替代。shape相比图片,减少资源占用,缩减APK体积。<?xmlversion="1.0"encoding="utf-8"?><shape  xmlns:android="http://schemas.android.c......
  • P1802 5 倍经验日
    includeincludeincludeusingnamespacestd;intn,x;intF[9000];intwin[1010],lose[1010],v[1010];intmain(){cin>>n>>x;for(inti=1;i<=n;i++){cin>>lose[i]>>win[i]>>v[i];}for(inti=1;i&l......