
Android最全面试题-Offer直通车
文章平均质量分 89
17年+码农经历了很多次面试,也多次作为面试官面试别人,多次Android面试和面试别人,深知哪些面试题是会被经常问到,熟背八股文和总结好自己项目经验,将让你在面试更容易拿到Offer。长期更新Android面试题,分享面试技巧和推荐Android的就业机会,不定时在线答疑。
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
大模型大数据攻城狮
在阿里巴巴等多种类型公司工作过,第一份工作是在大厂做移动开发,后来在创业公司由于团队需要做后台开发、嵌入式开发等几乎全栈开发,最近这些年还保持必要全栈开发,精力更多在大数据、大模型等领域。
展开
-
《Android最全面试题-Offer直通车》目录
如今Android求职是僧多粥少,竞争非常激烈,企业招聘时要求很高,本专栏汇聚android面试各种考点,各大公司Android面试题,《Android 最全面试题》将助你全方位提升,助您脱颖而出,早日拿到满意Offer。本专栏汇聚了海量优质内容,文章数量超过100 篇。凭借过硬的质量,每月新增订阅用户数以百计,如今仅需特惠价 9.9 元,限时抢购,后续将逐步恢复原价,早订阅早开启逆袭之旅。精心筹备,整理出一系列超万字精华篇章,累计数十万的 Android 面试题深度剖析。原创 2025-01-04 18:00:54 · 885 阅读 · 0 评论 -
同花顺Android面试题及参考答案
线程安全是指当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,这个对象都能表现出正确的行为,那么这个对象就是线程安全的。Java 解决线程同步有多种方案。一种是使用关键字,它可以修饰方法或代码块。修饰实例方法时,锁的是当前实例对象;修饰静态方法时,锁的是当前类的 Class 对象;修饰代码块时,可以指定锁的对象。count++;另一种是使用类,它是 Java 5 之后提供的更灵活的锁机制,相比。原创 2025-02-17 07:19:25 · 297 阅读 · 0 评论 -
东方财富Android面试题及参考答案
常见的数据结构排序算法有多种,下面分别介绍它们的时间复杂度、空间复杂度以及稳定性。冒泡排序:它是一种简单的排序算法,通过多次比较相邻元素并交换位置,将最大(或最小)的元素逐步 “冒泡” 到数组的末尾。时间复杂度方面,最好情况下为 O (n),即数组已经是有序的;最坏和平均情况下为 O (n²)。空间复杂度为 O (1),只需要常数级的额外空间。冒泡排序是稳定的排序算法,因为在比较和交换元素时,相等元素的相对顺序不会改变。选择排序。原创 2025-02-13 00:12:27 · 692 阅读 · 0 评论 -
Android开发简历优化指南
比如,完成了一个具有挑战性的 Android 项目、获得了行业内的技术认证(如 Android Developer Certification)、在技术论坛上发表了有影响力的文章(如在开源中国、掘金等平台分享 Android 开发经验)等,都要及时记录下来,并在适当的时候更新到简历中,确保简历始终能反映自己最新的技术水平和成就。例如,当掌握了新的 Android 开发框架,如 Jetpack Compose,就将其添加到简历的专业技能部分,并简要描述在相关项目中的应用情况和成果。原创 2025-02-11 00:07:50 · 337 阅读 · 0 评论 -
货拉拉Android开发面试题及参考答案
面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程范式,它将数据和操作数据的方法封装在一起,形成对象,并通过对象之间的交互来实现程序的功能。面向对象编程具有以下几个核心概念和特点。安全性HTTP是超文本传输协议,它以明文形式传输数据,数据在传输过程中容易被窃取和篡改,安全性较低。而HTTPS是超文本传输安全协议,它在HTTP的基础上加入了SSL/TLS协议,通过加密和身份验证机制,保证数据传输的安全性,防止数据被窃取和篡改。端口号HTTP默认使用 80 端口,原创 2025-02-09 07:36:53 · 468 阅读 · 0 评论 -
携程Android开发面试题及参考答案
例如,当 n = 5 时,根据状态转移方程依次计算:dp [2] = dp [1] + dp [0] = 2,dp [3] = dp [2] + dp [1] = 3,dp [4] = dp [3] + dp [2] = 5,dp [5] = dp [4] + dp [3] = 8,即有 8 种不同的方法可以爬到 5 阶楼顶。它会比较更新前后的虚拟 DOM 树,找出发生变化的部分,然后只更新实际 DOM 中对应的部分,而不是重新渲染整个组件树,这样可以大大减少 DOM 操作的开销,提高更新效率。原创 2025-02-01 09:57:22 · 525 阅读 · 0 评论 -
网易Android开发面试题200道及参考答案 (下)
Retrofit:是一个类型安全的 HTTP 客户端,用于 Android 和 Java 应用程序中进行网络请求。它使用简单,通过注解的方式来配置网络请求,比如@GET@POST等注解来指定请求方法,@Path@Query等注解来传递参数。Retrofit 还支持 RxJava 等响应式编程框架,方便进行异步操作和数据处理,能很好地与 MVVM 等架构配合使用,提高代码的可维护性和可测试性。Glide:是一个强大的图片加载框架,主要用于在 Android 应用中加载和显示图片。原创 2025-01-26 00:00:06 · 917 阅读 · 0 评论 -
网易Android开发面试题200道及参考答案 (上)
Java 中有四种引用类型,分别是强引用、软引用、弱引用和虚引用。强引用:是最常见的引用类型,如中obj就是强引用。只要强引用存在,垃圾回收器就不会回收被引用的对象,即使内存不足也不会回收,可能会导致内存溢出。在项目中,大多数普通对象都是通过强引用来使用的,用于保证对象在需要的时候一直存在。软引用:通过类来实现,当内存空间足够时,软引用对象不会被回收;当内存不足时,垃圾回收器会回收软引用指向的对象。常用于实现缓存机制,比如图片缓存,当内存充足时可以保留图片数据,内存紧张时可以释放这些缓存以避免内存溢出。原创 2025-01-24 00:05:10 · 437 阅读 · 0 评论 -
搜狐Android开发(安卓)面试题及参考答案
ContentProvider 是 Android 中用于在不同的应用程序之间共享数据的重要组件。它通过定义一组标准的接口,使得其他应用可以通过 ContentResolver 来访问和操作其提供的数据。首先,ContentProvider 需要在 AndroidManifest.xml 文件中进行注册,声明其提供的数据类型和权限等信息。然后,在 ContentProvider 的子类中,需要实现 query、insert、update、delete 等方法,来处理对数据的各种操作请求。原创 2025-01-23 00:05:37 · 445 阅读 · 0 评论 -
硬刚Android Framework SurfaceFlinger:4万字长文深度剖析
第一章 SurfaceFlinger 的基本原理1.1 SurfaceFlinger 的架构与设计在 Android 系统里,SurfaceFlinger 的架构设计那可是相当关键,它主要负责管理和合成屏幕上要显示的内容。简单来讲,就像是一个大管家,把各种要显示在屏幕上的东西整理好,然后展示给我们看。整个架构设计的核心在于几个主要组件相互配合着工作,从而保证用户界面能流畅地显示,而且渲染效率也很高。首先得说说 App 和 Service,它们在这个架构里扮演着内容提供者的角色。咱原创 2025-01-17 00:05:32 · 906 阅读 · 0 评论 -
新浪安卓(Android)开发面试题及参考答案(68道题,9道手撕题)
HTTPS 的流程大致如下:首先客户端发起请求,服务器返回证书,客户端验证证书并生成随机密钥,用服务器公钥加密后传给服务器,双方再用这个对称密钥进行数据加密传输。中间人攻击是指攻击者在客户端和服务器之间插入自己,拦截、篡改或窃取双方通信的数据。比如攻击者拦截客户端请求,伪装成服务器向客户端发送假证书,客户端若没识别出来,就会与攻击者建立连接,攻击者就能获取或篡改传输的数据。验证证书合法性:客户端要严格验证服务器证书,检查证书是否由可信的 CA 颁发、证书是否过期、证书中的域名是否与访问的域名一致等。原创 2025-01-22 00:05:37 · 527 阅读 · 0 评论 -
字节腾讯阿里大厂面经汇总:Java集合(容器)大厂面试题及参考答案
ArrayList的扩容机制以及删除操作的时间复杂度ArrayList是Java中非常常用的一个集合类,它是基于数组实现的动态数组。当我们创建一个ArrayList时,如果不指定初始容量,它会有一个默认的初始容量(通常是10)。当我们向ArrayList中添加元素时,如果元素的数量达到了当前的容量,ArrayList就需要进行扩容操作。扩容的过程是这样的:它会创建一个新的数组,新数组的容量通常是原来数组容量的1.5倍(在Java8及以后的版本中,这个倍数可能会有所调整,但大致是原创 2025-01-20 00:06:40 · 814 阅读 · 0 评论 -
联想Android面试题及参考答案
Android 架构主要分为四层,从下往上依次是 Linux 内核层、系统运行库层、应用框架层和应用层。Linux 内核层是 Android 系统的基础。它提供了底层的硬件驱动程序,包括显示驱动、摄像头驱动、音频驱动等多种硬件设备的驱动。同时,它还管理着系统的进程、内存、设备文件等重要资源。例如,当应用程序需要访问硬件设备,如摄像头来拍照时,是通过 Linux 内核层的摄像头驱动来实现设备的操作。而且,内核层的进程管理机制确保了各个应用程序能够合理地分配 CPU 时间,实现多任务处理。原创 2025-01-15 00:09:52 · 561 阅读 · 0 评论 -
Android Framework WMS全面概述和知识要点
WindowManagerService 类是整个 WMS 的核心大脑,处于系统服务层,负责协调和管理所有与窗口相关的操作。它在 Android 系统架构中起到承上启下的关键作用,向上对接应用层的窗口请求,向下与 SurfaceFlinger 等底层组件交互,确保窗口能够正确地在屏幕上显示和管理。原创 2025-01-13 00:00:28 · 699 阅读 · 0 评论 -
大厂面试必问JVM内存管理面试题最强集合,看你学废了几条?
讲一下 Java 的虚拟机。Java 虚拟机(JVM)是 Java 程序的运行核心。它是一个抽象的计算机,有自己的指令集和运行时数据区。JVM 主要负责执行 Java 字节码。字节码是一种中间形式的代码,当我们编写 Java 源程序后,通过编译器(如 javac)将其编译成字节码文件(.class 文件)。JVM 读取字节码文件,并将其解释或编译成机器码来运行。JVM 有多种实现,比如 HotSpot VM、J9 VM 等。其中 HotSpot VM 是最常用的一种。它采用了混合原创 2025-01-13 00:00:54 · 607 阅读 · 0 评论 -
面试加分项:Android Framework AMS 全面概述和知识要点
AMS 作为 Android 系统的核心服务,其工作原理的核心在于对系统资源进行精细化的管理和调度,从而确保应用程序能够与用户进行顺畅的交互。它就像一个智能的交通管理员,全面控制着应用程序的生命周期、任务栈、进程状态,同时还负责广播的发送与接收以及服务的管理。这个机制非常复杂,因为它需要实时响应各种系统事件和用户请求,并且要保证系统资源的合理分配,维持应用程序的稳定运行。管理应用程序的生命周期是 AMS 的主要功能之一。在 Android 系统中,应用程序的生命周期完全由 AMS 严格把控。原创 2025-01-12 15:05:42 · 654 阅读 · 0 评论 -
Android RIL(Radio Interface Layer)全面概述和知识要点(3万字长文)
在 Android 系统这个庞大而复杂的体系里,RIL(Radio Interface Layer,无线接口层)绝对是个关键角色。简单来讲,它就像一座桥梁,一头连着手机基带,另一头接着上层应用 ,在应用程序和调制解调器(Modem)之间搭建起了信息交流的通道。想象一下,咱们在手机上点击拨号按钮,或者编辑一条短信发送出去,这些操作产生的请求并不会直接到达手机的基带处理器。而是先由 RIL 接手,它把这些来自上层应用程序的请求,像拨号、发送短信这类,巧妙地转换成能够和基带处理器顺畅交互的命令。原创 2025-01-11 08:10:35 · 622 阅读 · 0 评论 -
金山WPS Android面试题及参考答案
在 Android 系统中,Binder 机制是一种重要的进程间通信(IPC)机制。从架构层面看,Binder 机制采用了 C/S(客户端 / 服务器)架构。服务器端(Service)提供服务,例如系统服务中的 Activity Manager Service(负责管理 Activity 的生命周期等)、Window Manager Service(负责管理窗口相关事务)等。客户端(Client)则是需要获取服务的一方,如应用程序中的 Activity、Service 等组件。原创 2025-01-10 00:14:11 · 805 阅读 · 0 评论 -
面试加分项:Android Framework PMS 全面概述和知识要点
在 Android 系统的庞大架构里,PackageManagerService(PMS)可是个核心角色,专门负责管理系统里所有应用的包信息。打个比方,它就像是一个图书馆的管理员,而应用就像是图书馆里的书籍,PMS 负责对这些 “书籍” 进行整理、上架、下架等一系列操作。Android 设备启动的时候,SystemServer 就会启动 PMS。PMS 启动后,会像一个勤劳的小蜜蜂,遍历设备上的特定目录,像/data/app和,去扫描这些目录下的 apk 文件。原创 2025-01-10 00:11:05 · 828 阅读 · 0 评论 -
整理字节腾讯阿里等数百份大厂面经:Java多线程和线程安全最高频面试题及参考答案
AbstractQueuedSynchronizer(AQS)是一个用于构建锁和同步器的框架。它的核心是一个 FIFO(先进先出)的队列,用于管理等待获取同步状态的线程。AQS 维护了一个同步状态(state),这个状态可以用来表示锁是否被获取,获取了几次等信息。例如,在。原创 2025-01-08 21:42:43 · 667 阅读 · 0 评论 -
百度Android面试题及参考答案 (下)
内存泄漏是指程序中已经不再使用的对象,但是因为某些原因,这些对象无法被垃圾回收器(Garbage Collector)回收,从而导致内存占用不断增加的现象。在 Android 中有多种内存泄漏的场景。一是静态变量导致的内存泄漏。例如,在一个 Activity 中,如果将一个 Context(如this)赋值给一个静态变量,当 Activity 应该被销毁时,由于这个静态变量仍然持有 Activity 的引用,导致 Activity 无法被垃圾回收。原创 2025-01-07 00:01:53 · 731 阅读 · 0 评论 -
面试高阶问题:对称加密与非对称加密的原理及其应用场景
生成一个 2048 位的 RSA 密钥对,然后使用私钥对消息进行签名,通过。方法,用于对文件进行加密和解密操作。在加密和解密过程中,使用。生成一个 128 位的 AES 密钥,然后分别实现了。方法对数据进行分块处理和最终的加密解密操作。最后使用公钥对签名进行验证,通过。方法实现,根据验证结果输出相应的提示信息。在上述代码中,首先使用。在上述代码中,首先使用。原创 2025-01-06 00:00:37 · 480 阅读 · 0 评论 -
百度Android最新150道面试题及参考答案 (中)
首先要明确自定义 View 的用途,是用于展示特定的图形(如自定义图表、图形验证码等),还是用于实现特殊的交互功能(如自定义滑动条、可拖拽的视图等)。例如,如果要设计一个自定义的圆形进度条 View,就需要考虑它的外观(如颜色、线条粗细等)和功能(如如何更新进度、如何响应用户的触摸操作等)。原创 2025-01-06 00:01:35 · 1357 阅读 · 0 评论 -
百度Android最新150道面试题及参考答案 (上)
在 Java 中,本身并没有直接支持像一些动态语言那样随意的动态下发代码机制,但可以通过一些间接的方式实现类似的功能。在 Java 中,类不允许多继承,但是接口允许多继承。面向对象的三大特性是封装、继承和多态。浅拷贝是指在拷贝一个对象时,对于对象中的基本数据类型的成员变量,会复制一份新的值;而对于对象中的引用数据类型的成员变量,只是复制了引用,而没有复制引用所指向的对象本身。在 Java 中,实现浅拷贝的常见方式有以下几种。原创 2025-01-05 00:01:23 · 488 阅读 · 0 评论 -
科大讯飞android面试题及参考答案
如何理解面向对象编程?面向对象编程(Object - Oriented Programming,简称 OOP)是一种编程范式,它以对象为核心来组织程序结构。在面向对象编程中,对象是数据和操作这些数据的方法的集合。例如,我们可以把汽车看作一个对象。汽车有自己的属性,像颜色、品牌、速度等,这些属性就类似于程序中的数据成员。同时,汽车还有一系列的行为,比如启动、加速、刹车等,这些行为就对应着程序中的方法。从类的角度来看,类是对象的模板。还以汽车为例,“汽车类” 定义了汽车这个对象应该具有的原创 2025-01-04 07:29:53 · 373 阅读 · 0 评论 -
面试高频高阶问题:2万字长文详解JDK源码用到哪些设计模式
单例模式属于创建型设计模式,核心要义是确保一个类仅有一个实例,并提供一个全局访问点供外部获取该唯一实例。在软件开发进程中,此模式用途广泛,常用于管理只需单一实例的资源或服务。像是配置文件管理,整个应用运行期间只需加载一次配置,单例模式可避免重复加载,节省资源;数据库连接池采用单例,能防止创建多个连接池导致资源浪费与连接冲突;线程池作为全局资源协调线程任务,以单例形式存在可优化资源调度;日志记录系统若为单例,能保证日志输出的一致性与连贯性。从性能和效率层面考量,单例模式优势显著。原创 2025-01-03 00:00:38 · 920 阅读 · 0 评论 -
滴滴Android开发面试题及参考答案
继承 View 或其子类:根据具体的需求选择合适的父类进行继承,如果只是简单的绘制自定义图形或显示特定的内容,可以继承 View;如果是具有特定布局和子 View 的组合,可以继承 ViewGroup 等。重写构造方法:通常需要重写 View 的多个构造方法,以确保在不同的情况下都能正确地创建 View。在构造方法中可以进行一些初始化操作,如设置默认属性、加载布局等。测量 View 的大小:重写 onMeasure () 方法,根据 View 的布局参数和内容来测量 View 的大小。原创 2025-01-01 00:05:35 · 561 阅读 · 0 评论 -
斗鱼Android面试题及参考答案
OkHttp 内部使用了线程池来管理网络请求的线程调度。当发起一个网络请求时,OkHttp 会从线程池中获取一个线程来执行请求任务,如果线程池中没有可用的线程,则会等待直到有线程空闲。在请求完成后,线程会将结果返回给主线程或者指定的回调线程。这样可以避免频繁地创建和销毁线程,提高了线程的复用率和系统的性能。同时,OkHttp 还可以根据网络情况和请求的优先级自动调整线程的调度策略,确保重要的请求能够及时得到处理。自定义 View 的基本流程继承 View 或其子类。原创 2024-12-31 00:07:05 · 846 阅读 · 0 评论 -
美团Android开发200道面试题及参考答案(下)
Flutter 是谷歌开源的移动应用开发框架,使用 Dart 语言进行开发。它具有跨平台特性,一套代码可以同时在 Android 和 iOS 等多个平台上运行,大大减少了开发成本和时间。其热重载功能可以让开发者在修改代码后立即看到效果,无需重新编译整个应用,极大地提高了开发效率。Flutter 的性能表现出色,它通过自己的渲染引擎直接绘制 UI,避免了原生平台的 UI 组件渲染开销,能够实现流畅的动画效果和快速的响应速度。原创 2024-12-30 00:07:42 · 515 阅读 · 0 评论 -
美团Android开发200道面试题及参考答案(中)
饿汉式单例是在类加载的时候就创建好单例对象实例,这种方式比较简单直接,能够保证线程安全,因为类加载过程是由虚拟机来保证线程安全的。在上述代码中,instance对象在类加载时就被初始化,后续通过方法获取时,直接返回这个已经创建好的实例,由于类加载只有一次,所以能确保整个应用中只有这一个实例存在。不过它的缺点是,如果这个单例对象创建比较耗时或者占用较多资源,而在应用程序中可能又不一定会用到这个单例对象,就会造成资源的过早占用和浪费。原创 2024-12-29 08:11:45 · 541 阅读 · 0 评论 -
美团Android开发200道面试题及参考答案(上)
可以借助一些已有的滑动辅助类,像 ViewPager2,它内部对于页面切换和内部子 View 的滑动有很好的协调机制,能够避免很多常见的滑动冲突情况。或者开发者根据具体需求自定义滑动逻辑,通过计算触摸点的位移、速度等参数,精确地判断滑动事件应该归属哪个 View 处理。例如在一个有多个可滑动卡片且卡片内还有列表可滑动的复杂界面中,通过自定义逻辑,分析每次触摸滑动的方向、起始点以及滑动的距离变化等,来决定是让卡片整体滑动切换还是让卡片内的列表进行滑动展示内容,以此解决滑动冲突问题。原创 2024-12-28 01:17:34 · 1235 阅读 · 0 评论 -
VIVO Android面试题及参考答案
自定义 View 的设计一般有以下几个主要步骤。确定需求和功能:首先要明确自定义 View 要实现什么样的功能和展示效果。比如是要设计一个可以展示动态图表的 View,还是一个带有特殊样式的按钮等。例如,打算设计一个圆形进度条 View,能够动态显示任务的完成进度,这就是明确的功能需求。继承合适的基类:根据需求来选择继承的基类。如果是简单的可视化组件,通常可以继承 View 类;如果是有交互功能且基于已有组件拓展的,可能继承自 Button、TextView 等具体的现有 View 类。原创 2024-12-24 00:06:35 · 947 阅读 · 0 评论 -
OPPO Android面试题及参考答案 (下)
垃圾回收机制(Garbage Collection,简称 GC)是一种自动管理内存的机制,它的主要目的是在程序运行过程中,自动识别并回收那些不再被使用的内存空间,避免内存泄漏以及手动管理内存带来的复杂性和容易出错的问题。不同的编程语言和运行环境有不同的垃圾回收实现方式,但总体思路都是通过一定的算法和策略来判断哪些对象是 “垃圾”,即不再被程序所需要,然后回收它们占用的内存。原创 2024-12-23 00:01:10 · 409 阅读 · 0 评论 -
OPPO Android面试题及参考答案 (上)
定义的比较规则不能简单地按照数字本身的大小来比较,而是要考虑拼接后的大小情况。比如对于两个数字 m 和 n,要比较 mn(m 和 n 拼接起来)和 nm(n 和 m 拼接起来)的大小。如果 mn nm,n 就应该排在 m 前面。通过这样的比较方式,可以确定每两个数字之间的相对顺序。例如,有数字 2 和 21,比较 221 和 212,因为 212 < 221,所以 21 应该排在 2 前面。原创 2024-12-21 11:46:55 · 547 阅读 · 0 评论 -
唯品会Android面试题及参考答案
Android 的四大组件分别是 Activity、Service、Broadcast Receiver 和 Content Provider。Activity 是 Android 应用中最直观的组件,它主要用于实现用户界面。一个 Activity 通常对应一个屏幕的内容。例如,在一个新闻应用中,当用户打开应用看到的新闻列表页面是一个 Activity,当用户点击某条新闻进入新闻详情页面时,这个详情页面又是一个新的 Activity。Activity 之间可以通过 Intent 进行跳转。原创 2024-12-20 00:06:05 · 891 阅读 · 0 评论 -
从上千份大厂面经呕心沥血整理:大厂高频手撕面试题(数据结构和算法篇 ,Java实现亲试可跑)
判断两个链表是否相交可以采用多种方法。一种方法是使用双指针。首先分别遍历两个链表,得到两个链表的长度。然后让长链表的指针先走两个链表长度差的步数。之后,同时移动两个链表的指针,每次比较两个指针是否指向相同的节点。如果指向相同节点,那么这两个链表相交;如果直到指针都走到链表末尾还没有相同节点,那么这两个链表不相交。例如,有链表 A 长度为 m,链表 B 长度为 n(假设 m > n)。先让链表 A 的指针先走 m - n 步,然后同时移动 A 和 B 的指针。原创 2024-12-17 00:09:26 · 1063 阅读 · 0 评论 -
三七互娱Android面试题及参考答案
创建线程的方式有哪些?在 Android 开发中,创建线程主要有以下几种方式。一种是继承 Thread 类。首先创建一个类继承自 Thread 类,然后重写 run 方法。在 run 方法中定义线程需要执行的任务。例如:class MyThread extends Thread { @Override public void run() { // 这里是线程执行的代码 for (int i = 0; i < 10; i++)原创 2024-12-16 00:03:45 · 416 阅读 · 0 评论 -
康佳Android面试题及参考答案(多张原理图)
JVM 内存分布和分代回收机制是什么?JVM 内存主要分为以下几个区域。堆(Heap)是 JVM 管理的最大的一块内存区域,主要用于存放对象实例。所有线程共享堆内存,在堆中又分为年轻代(Young Generation)和老年代(Old Generation)。年轻代又分为 Eden 区和两个 Survivor 区(一般是 S0 和 S1)。新创建的对象通常会被分配到 Eden 区,当 Eden 区满了之后,会触发 Minor GC,存活的对象会被复制到 Survivor 区,经过多次 Mi原创 2024-12-15 00:00:18 · 904 阅读 · 0 评论 -
Halcon面试题及参考答案
图像阈值化是一种简单而有效的图像分割方法。它是根据像素的灰度值,将图像中的像素分为不同的类别。通常是将像素分为目标像素和背景像素。例如,设定一个阈值 T,如果像素的灰度值大于 T,则将其判定为目标像素,灰度值小于等于 T 的像素判定为背景像素,这样就可以将目标从背景中分离出来。在 Halcon 中,进行阈值分割主要使用 “threshold” 函数。这个函数的主要参数是输入图像和阈值。例如,对于一幅灰度图像,通过设定合适的阈值,就可以将图像二值化。原创 2024-12-14 10:04:12 · 827 阅读 · 0 评论 -
腾讯微信Android面试题及参考答案(多张原理图)
当自定义 View 时,处理 wrap_content 和 padding 需要特别注意,以确保视图能够正确地布局和显示。对于 wrap_content,首先要理解它的含义。当视图的宽度或高度设置为 wrap_content 时,意味着视图的大小应该根据其内容自动调整。在自定义 View 中,需要在 onMeasure 方法中进行特殊处理。在 onMeasure 方法中,需要根据视图的内容来计算合适的大小。如果是一个简单的自定义 View,比如只显示一个圆形,那么需要考虑圆形的半径等因素来计算大小。原创 2024-12-13 00:08:52 · 786 阅读 · 0 评论