跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Java大前端java算法

Android 技术面试指南:Java、Kotlin 与核心知识点解析

档系统整理了 Android 开发岗位的核心面试题,涵盖 Java 基础、集合、多线程、JVM、Android 组件、UI 绘制、性能优化、IPC、系统架构、Kotlin 语言特性及算法设计模式等关键领域。内容不仅列出高频考点,还提供了简明扼要的技术要点解析,旨在帮助开发者全面复习基础知识,掌握面试核心逻辑,提升技术深度与广度,适用于 1-3 年经验及以上的 Android 工程师备考。

GopherDev发布于 2025/2/7更新于 2026/7/1641 浏览
Android 技术面试指南:Java、Kotlin 与核心知识点解析

Android 技术面试指南

本文整理了 Android 开发岗位常见面试题,涵盖 Java 基础、集合、多线程、JVM、Android 组件、UI 绘制、性能优化、IPC、系统架构及 Kotlin 等核心领域。旨在帮助开发者系统复习,查漏补缺,提升面试通过率。

第一章 Java 方面

(一)Java 基础部分

1. 抽象类与接口的区别?

  • 抽象类可以有构造方法、成员变量(非 public static final)、普通方法;接口只能有常量(public static final)和抽象方法(Java 8 后可有 default/static 方法)。
  • 一个类可以实现多个接口,但只能继承一个抽象类。
  • 抽象类是对类的抽象,体现"is-a"关系;接口是对行为的抽象,体现"can-do"关系。

2. final, static, synchronized 关键字的作用?

  • final:修饰类不可继承,修饰方法不可重写,修饰变量不可变(基本类型值不变,引用类型地址不变)。
  • static:属于类而非实例,内存中只有一份,可通过类名直接访问。
  • synchronized:用于线程同步,保证共享资源在并发访问时的原子性。

3. String、StringBuffer 和 StringBuilder 的区别?

  • String:不可变字符序列,每次修改都会生成新对象。
  • StringBuffer:可变字符序列,线程安全,方法加锁,效率较低。
  • StringBuilder:可变字符序列,线程不安全,效率高,推荐单线程使用。

4. equals() 与 ==、hashCode() 的区别?

  • ==:比较基本类型的值或对象的引用地址。
  • equals():默认比较地址,Object 子类通常重写为比较内容。
  • hashCode():返回哈希码,用于哈希表存储。若重写 equals() 必须重写 hashCode(),保证相等对象哈希码相同。

5. 深拷贝与浅拷贝的区别?

  • 浅拷贝:复制对象本身,内部引用类型指向原对象地址。
  • 深拷贝:复制对象及其引用的所有对象,完全独立。

6. Error 和 Exception 的区别?

  • Error:严重错误,如 OutOfMemoryError,程序无法处理,通常不捕获。
  • Exception:程序可处理的异常,分为受检异常(Checked)和非受检异常(Runtime)。

7. 反射机制及应用场景?

  • 运行时动态获取类信息并操作对象。应用场景:框架设计(如 Spring)、动态代理、序列化、插件化开发。

8. 重写 equals() 为什么要重写 hashCode()?

  • 保证在 HashMap/HashSet 中,相等的对象具有相同的哈希桶位置,否则可能导致查找失败。

9. IO 流分类及 BIO/NIO/AIO 区别?

  • 按流向分输入/输出流;按功能分节点流/处理流。
  • BIO:阻塞 IO,一个连接一个线程。
  • NIO:非阻塞 IO,基于 Channel 和 Buffer,支持多路复用。
  • AIO:异步非阻塞 IO,基于事件和回调机制。

10. 泛型类型擦除及局限性?

  • 编译后泛型信息被擦除,替换为原始类型。局限性:无法判断泛型具体类型,不能创建泛型数组。

11. String 为什么不可变?

  • 安全性(字符串常池)、线程安全、Hash 缓存优化。

12. 注解的理解?

  • 元数据,用于标记代码,编译器或运行时读取。常用:@Override, @Deprecated, @SuppressWarnings。

13. 变量创建和回收时机?

  • 成员变量随对象创建而创建,对象销毁回收;局部变量随栈帧创建销毁;静态变量随类加载创建,卸载时回收。

14. String.length() 原理?

  • JDK 9+ 使用 byte[] 存储,length() 直接返回数组长度属性,O(1) 复杂度。

(二)Java 集合

1. List, Set, Map 区别?

  • List:有序,可重复,索引访问。
  • Set:无序,不可重复。
  • Map:键值对,Key 不可重复。

2. ArrayList 和 LinkedList 区别?

  • ArrayList:基于数组,随机访问快,增删慢。
  • LinkedList:基于双向链表,增删快,随机访问慢。

3. HashMap 与 HashTable 区别?

  • HashMap 非线程安全,允许 null 键值,扩容 2 倍;HashTable 线程安全(synchronized),不允许 null,扩容 2 倍 +1。

4. ArrayList 扩容机制?

  • 默认容量 10,超过时扩容为原来的 1.5 倍,需重新分配数组并拷贝元素。

5. HashMap 实现原理?

  • 数组 + 链表 + 红黑树(JDK 8+)。冲突时链表转红黑树(阈值 8),负载因子 0.75。

6. LinkedHashMap 原理?

  • 继承 HashMap,维护双向链表记录插入顺序或访问顺序。

7. ConcurrentHashMap 理解?

  • JDK 1.7 分段锁,JDK 1.8 CAS+synchronized 保证线程安全,性能更高。

(三)Java 多线程

1. 多线程方式?

  • 继承 Thread 类,实现 Runnable 接口,实现 Callable 接口配合 FutureTask,线程池。

2. 线程状态?

  • NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED。

3. 同步实现?

  • synchronized 关键字,Lock 接口,volatile 变量,原子类。

4. 死锁及避免?

  • 循环等待资源。避免:固定资源顺序获取,超时机制,检测死锁。

5. 线程阻塞原因?

  • 等待 I/O,等待锁,sleep/wait,CPU 调度。

6. run() 与 start() 区别?

  • start() 启动新线程执行 run();run() 只是普通方法调用,在当前线程执行。

7. synchronized 和 volatile 区别?

  • synchronized 保证原子性和可见性,volatile 仅保证可见性和禁止指令重排。

8. 线程安全保证?

  • 不可变对象,线程封闭,互斥锁,无锁编程。

9. ThreadLocal 用法和原理?

  • 提供线程局部变量副本。原理:Thread 内部维护 ThreadLocalMap,Key 为 ThreadLocal 弱引用。

10. notify 和 notifyAll 区别?

  • notify 唤醒一个等待线程;notifyAll 唤醒所有等待线程。

11. 线程池及创建?

  • 减少线程创建开销。通过 Executors 或 ThreadPoolExecutor 创建,配置核心线程数、最大线程数、队列等。

12. 常见锁?

  • 公平锁/非公平锁,读写锁,重入锁,自旋锁。

13. sleep() 和 wait() 区别?

  • sleep 是 Thread 静态方法,不释放锁;wait 是 Object 方法,释放锁。

14. 悲观锁和乐观锁?

  • 悲观锁假设冲突,直接加锁;乐观锁假设无冲突,CAS 机制。

15. BlockingQueue 原理?

  • 支持阻塞的队列,生产者在空时阻塞,消费者在满时阻塞。内部基于 Lock 和 Condition。

16. 线程安全集合?

  • Vector, Hashtable, CopyOnWriteArrayList, ConcurrentHashMap。

17. Atomic 类原理和缺点?

  • 基于 CAS 实现无锁并发。缺点:ABA 问题,高竞争下性能下降。

18. ThreadLocal 使用场景?

  • 数据库连接管理,用户上下文传递,避免线程安全问题。

(四)Java 虚拟机

1. 垃圾回收机制?

  • 标记 - 清除,标记 - 整理,复制算法。GC Roots 可达性分析。

2. 引用类型?

  • 强引用(不回收),软引用(内存不足回收),弱引用(下次 GC 回收),虚引用(跟踪对象回收状态)。

3. 类加载机制?

  • 加载,验证,准备,解析,初始化。双亲委派模型。

4. JVM, Dalvik, ART 区别?

  • JVM 标准 Java 虚拟机;Dalvik 安卓早期虚拟机,解释执行;ART 安卓 5.0+,预编译 AOT,启动快但安装慢。

5. 内存回收机制?

  • 分代收集:新生代(Eden/Survivor),老年代。Minor GC 和 Major GC。

6. JMM 是什么?

  • Java 内存模型,定义线程如何操作主内存和工作内存。解决可见性、原子性、有序性问题。

第二章 Android 方面

(一)Android 四大组件相关

1. Activity 与 Fragment 通信?

  • Activity 传参给 Fragment;Fragment 回调接口给 Activity;ViewModel 共享;广播;EventBus。

2. LaunchMode 应用场景?

  • standard:默认,每页新建。
  • singleTop:栈顶复用。
  • singleTask:栈内复用,清除上层。
  • singleInstance:独立栈,全局唯一。

3. BroadcastReceiver 与 LocalBroadcastReceiver 区别?

  • 前者跨进程,后者仅限应用内,更安全高效。

4. Context 了解?

  • ApplicationContext(应用级,生命周期长),ActivityContext(界面级,易内存泄漏)。

5. IntentFilter 及使用?

  • 声明组件能响应的 Intent 动作、类别、数据。用于隐式 Intent 匹配。

6. startService 和 bindService 区别?

  • startService:生命周期独立,startForeground 保活。
  • bindService:绑定服务,解绑销毁,适合短周期交互。

7. Service 保活?

  • 前台服务,JobScheduler,AlarmManager,双进程守护。

8. ContentProvider 数据共享?

  • 封装数据源,提供 URI 接口,支持跨进程 CRUD。

9. 横竖屏切换生命周期?

  • onConfigurationChanged 或重建(onDestroy -> onCreate)。

10. onNewIntent 调用时机?

  • singleTop/Task 模式下,Intent 再次发送时触发,需手动更新 UI。

11. Intent 传输数据限制?

  • Binder 限制约 1MB。大数据用 FileProvider 或临时文件。

12. ContentProvider/Resolver/Observer 关系?

  • Provider 提供数据,Resolver 操作数据,Observer 监听数据变化。

13. Activity 加载流程?

  • Launcher -> AMS -> WMS -> Zygote -> AppProcess -> ActivityThread -> attach -> onCreate。

(二)Android 异步任务和消息机制

1. HandlerThread 场景?

  • 需要后台 Looper 的场景,如下载、日志写入。

2. IntentService 场景?

  • 自动处理 Intent 请求,完成后自动停止,适合一次性任务。

3. AsyncTask 优缺点?

  • 优点:简单;缺点:内存泄漏风险,版本废弃,配置变更导致中断。

4. runOnUiThread 理解?

  • 将任务投递到主线程 Handler 执行。

5. 子线程能否更新 UI?

  • 不能,会抛异常。UI 操作必须在主线程。

6. Handler 机制原理?

  • MessageQueue 队列,Looper 循环取消息,Handler 分发。Message 包含 Runnable。

7. 子线程创建 Handler 异常?

  • 子线程没有 Looper,需先 prepare。

8. post 和 sendMessage 区别?

  • post 传入 Runnable,sendMessage 传入 Message。本质都是 enqueueMessage。

9. Loop 死循环为何不阻塞?

  • Looper.loop() 是死循环,但主线程负责渲染,消息处理是非阻塞的,由系统调度。

(三)Android UI 绘制相关

1. 补间动画和属性动画区别?

  • 补间:视觉变换,不改变真实属性;属性:改变 View 真实属性,支持插值器。

2. Window 和 DecorView?

  • Window 抽象窗口概念,DecorView 是根布局,包含标题栏和内容区。

3. UI 刷新机制?

  • VSYNC 信号触发,Choreographer 协调,ViewRootImpl.performTraversals 测量布局绘制。

4. Layout 效率?

  • FrameLayout > LinearLayout > RelativeLayout。嵌套越深效率越低。

5. 事件分发机制?

  • dispatchTouchEvent -> onInterceptTouchEvent -> onTouchEvent。自上而下分发,自下而上消费。

6. 自定义 View 流程?

  • 构造函数 -> onMeasure -> onLayout -> onDraw -> 触摸事件处理。

7. RecyclerView 优化?

  • 开启固定大小,ViewHolder 复用,DiffUtil,预加载,ItemDecoration 优化。

8. ListView 优化?

  • ViewHolder 模式,convertView 复用,分页加载。

9. 自定义 LayoutManager?

  • 继承 RecyclerView.LayoutManager,实现 measureChildren, layoutChild, scrollByX/Y。

10. RemoteViews 场景?

  • 通知栏、桌面 Widget,跨进程渲染 UI。

11. 获取 View 宽高方法?

  • addOnLayoutChangeListener, ViewTreeObserver, requestLayout 后获取。

12. 插值器和估值器?

  • Interpolator 控制速度曲线,Evaluator 控制数值计算。

13. getDimension 系列区别?

  • Dimension 返回 float,PixelOffset/Size 返回 int,后者用于坐标定位。

14. StaticLayout 用法?

  • 自定义文本换行和绘制,用于复杂文本展示。

15. ConstraintLayout 特点?

  • 扁平化布局,相对定位,性能优于嵌套布局。

16. LayoutInflater inflate 原理?

  • 解析 XML 生成 View 对象,根据父容器参数设置 LayoutParams。

17. Fragment 懒加载?

  • setUserVisibleHint (旧) 或 setUserVisibleHint 替代方案,onResume 时加载数据。

18. RecyclerView 缓存机制?

  • ScrapCache, RecycledViewPool, Offscreen Cache。

19. invalidate 和 postInvalidate?

  • invalidate 主线程,postInvalidate 子线程,触发重绘。

20. SurfaceView vs TextureView?

  • SurfaceView 独立图层,性能好;TextureView 可变换,支持透明,性能稍差。

21. Adapter 刷新方式?

  • notifyDataSetChanged, notifyItemInserted, DiffUtil。

22. Window 和 WindowManager?

  • WindowManager 是 Window 的具体实现,用于添加/移除 View。

23. Activity, View, Window 关系?

  • Activity 持有 Window,Window 持有 DecorView,DecorView 持有根 View。

24. WindowInsets?

  • 处理刘海屏、导航栏等系统 UI 区域。

25. View 位移方式?

  • translate, scale, rotate, alpha。

26. ViewPager 嵌套滚动拦截?

  • 需重写 onInterceptTouchEvent 判断方向。

27. Fragment 生命周期?

  • onAttach, onCreate, onCreateView, onViewCreated, onStart, onResume, onPause, onStop, onDestroyView, onDestroy, onDetach。

28. 同步屏障?

  • Choreographer 中的 Sync Barrier,跳过某些消息,用于优化滑动流畅度。

29. ViewDragHelper?

  • 辅助处理拖拽手势,简化 Drag 逻辑。

30. 屏幕刷新机制?

  • 60Hz/90Hz/120Hz,VSYNC 信号驱动。

(四)Android 性能调优相关

1. 性能优化了解?

  • 启动速度,内存,电量,流量,卡顿,包体积。

2. 内存泄漏场景?

  • 静态引用 Context,未注销监听器,单例持有 Activity,Handler 未清理。

3. 自定义 Handler 避免泄漏?

  • 使用 WeakReference,及时 removeCallbacksAndMessages。

4. OOM 原因?

  • 大图片加载,集合无限增长,内存泄漏,Native 堆溢出。

5. ANR 场景及解决?

  • 主线程耗时操作(网络,IO)。优化:异步处理,分片执行,降低主线程负载。

6. 内存优化方式?

  • 内存分析工具(MAT),减少对象创建,及时释放,使用 LruCache。

**7. 布局优化技巧?**r> - 减少嵌套,使用 Merge/ViewStub,ConstraintLayout,避免过度绘制。

8. 图片优化方案?

  • 压缩,缩略图,WebP 格式,LruCache,Glide/Picasso。

9. Native Crash 分析?

  • logcat 查看 stacktrace,ndk-stack 还原符号,AddressSanitizer。

10. APK 瘦身?

  • 混淆,去除无用资源,ProGuard,Split ABI,ZipAlign。

11. 启动优化?

  • 延迟初始化,异步加载,Splash 页优化,冷启动指标监控。

12. 代码混淆步骤?

  • ProGuard/R8 配置规则,保留必要类,测试验证。

13. WebView 优化?

  • 复用实例,关闭 JS 调试,按需加载,清理缓存。

14. 大图加载?

  • inSampleSize 采样,BitmapFactory.Options,逐步加载。

15. 网络请求优化?

  • 连接池,缓存策略,压缩传输,HTTP/2。

16. Bitmap 防溢出?

  • 计算目标尺寸,inJustDecodeBounds 预读,及时 recycle。

(五)Android 中的 IPC

1. IPC 方式?

  • Bundle, Messenger, AIDL, ContentProvider, Socket, File。

2. Binder 机制?

  • 客户端 - 服务端 - 内核 - 驱动。Binder 驱动管理进程间通信,一次拷贝。

3. AIDL?

  • Android Interface Definition Language,定义接口,自动生成 Stub 代码。

(六)Android 系统 SDK 相关

1. 系统架构?

  • Linux Kernel, HAL, Native Libs, Android Runtime, Framework API, Apps。

2. SharedPreferences 线程安全?

  • commit 同步,apply 异步。底层文件操作非线程安全,建议用 apply。

3. Serializable 和 Parcelable?

  • Serializable 反射,慢;Parcelable 手动序列化,快,Android 专用。

4. Android 7.0 新特性?

  • Nougat,多窗口,VR 模式,Project Treble。

5. ArrayMap 和 HashMap?

  • ArrayMap 针对少量数据优化,节省内存,无 Entry 对象。

6. LruCache 原理?

  • 最近最少使用算法,LinkedHashMap 实现,LRU 链。

7. SparseArray 代替 HashMap?

  • 针对 int 作为 Key 优化,避免装箱拆箱,节省内存。

8. PathClassLoader 和 DexClassLoader?

  • PathClassLoader 加载已安装 APK;DexClassLoader 可加载任意路径 dex/apk。

9. HttpClient 与 HttpUrlConnection?

  • HttpClient 废弃,HttpUrlConnection 原生,OkHttp 更流行。

10. Lifecycle?

  • 观察生命周期状态,避免内存泄漏,支持 ViewModel。

11. 签名机制?

  • 密钥对加密,校验完整性,升级需同签名。

12. APK 构建流程?

  • Gradle 编译 -> 打包 -> 签名 -> ZipAlign。

13. Android 8.0/9.0 特性?

  • 8.0 通知渠道,后台限制;9.0 隐私权限,深色模式。

14. Android 10 适配?

  • 分区存储,后台启动限制,隐私保护。

15. APK 安装过程?

  • PackageManagerService 扫描,解析,移动文件,注册组件。

16. Java 与 JS 互调?

  • addJavascriptInterface,evaluateJavascript。

17. JNI?

  • Java Native Interface,Java 调用 C/C++,需 native 方法声明。

18. App 启动流程?

  • Launcher -> AMS -> Zygote -> AppProcess -> ActivityThread -> onCreate。

(七)第三方框架分析

1. LeakCanary 原理?

  • 监听 Activity/Fragment 销毁,检查是否被引用,利用 HPROF 分析。

2. EventBus 原理?

  • 发布订阅模式,总线分发事件,支持粘性事件。

3. 网络拦截器?

  • OkHttp Interceptor,统一处理日志,鉴权,重试。

4. Glide 缓存机制?

  • 内存缓存(LRU),磁盘缓存(MD5),层级管理。

5. ViewModel 原理?

  • 配置变更时保留数据,生命周期感知。

6. ButterKnife 原理?

  • 注解处理器生成代码,bindView 查找控件。

7. RxJava 背压?

  • 生产者快于消费者时,缓冲或丢弃策略,Flowable 支持。

(八)综合技术

1. MVC 和 MVP?

  • MVC:Model-View-Controller,Controller 处理逻辑;MVP:Presenter 分离逻辑,View 薄层。

2. 存储方式?

  • SharedPreferences, SQLite, Room, File, Network。

3. 热修复原理?

  • DEX 补丁,类加载器替换,Hook 系统方法。

4. 机型适配?

  • 分辨率适配,字体适配,刘海屏适配,不同厂商 ROM 兼容。

5. 多渠道打包?

  • Gradle Flavor,Manifest 合并,BuildConfig。

6. MVP 防止泄漏?

  • Presenter 持 WeakReference 的 View,销毁时解绑。

7. 图片内存计算?

  • width * height * bytesPerPixel。

8. 64k 问题?

  • Method ID 限制 65535。解决:MultiDex,代码精简,R8。

9. Gradle 构建优化?

  • 增量编译,并行构建,依赖缓存,离线模式。

10. 设备唯一 ID?

  • AndroidId, IMEI (受限), OAID, UUID。

11. Android P HTTP 影响?

  • 强制 HTTPS,需配置 CleartextTrafficPermitted。

12. AOP 场景?

  • 日志埋点,权限检查,事务管理。

13. MVVM?

  • Model-View-ViewModel,数据绑定,单向数据流。

14. 数据埋点?

  • 自定义 View 拦截,SDK 集成,日志上报。

15. 断点上传?

  • 分片上传,记录进度,续传。

16. WebP 和 SVG?

  • WebP 压缩率高,SVG 矢量无损。Android 支持 WebP,SVG 需转换或使用 VectorDrawable。

17. 单元测试?

  • JUnit, Mockito, Robolectric。覆盖业务逻辑,Mock 外部依赖。

18. GIF 加载思路?

  • 逐帧解码,内存控制,GIF 转视频或 WebP。

19. AndroidX 迁移?

  • 替换 Support Library,Gradle 配置,IDE 提示迁移。

(九)数据结构方面

1. 冒泡排序及优化?

  • 相邻交换。优化:标记是否交换,提前结束。

2. 单链表实现?

  • Node 类含 data 和 next,头指针操作。

3. 反转单链表?

  • 三指针法:prev, curr, next,逐个翻转指向。

4. 时间/空间复杂度?

  • 时间:算法运行步数;空间:额外内存占用。

5. 判断链表成环?

  • 快慢指针,相遇则有环。

6. 红黑树?

  • 自平衡二叉搜索树,保证最坏情况 O(log n)。HashMap 底层结构。

7. 快速排序及优化?

  • 分治法。优化:三数取中,小数组插入排序。

8. 循环队列?

  • 数组首尾相接,解决假溢出,head/tail 指针移动。

9. 判断链表交叉?

  • 计算长度差,对齐起点,同步遍历。

(十)设计模式

1. 单例模式?

  • 饿汉式,懒汉式(双重检查锁),静态内部类,枚举。

2. 面向对象原则?

  • SOLID:单一职责,开闭,里氏替换,接口隔离,依赖倒置。

3. 工厂模式?

  • 简单工厂,工厂方法,抽象工厂。

4. 项目设计模式?

  • 观察者(EventBus),适配器(RecyclerView),装饰者(InputStream)。

5. 代理模式?

  • 静态代理,动态代理(JDK/CGLIB)。Android 源码中 Binder 代理。

6. 单例/建造者/工厂选择?

  • 单例:全局唯一;建造者:复杂对象构建;工厂:解耦创建逻辑。

7. 原型模式?

  • 克隆对象,避免 new 开销。

8. 策略模式?

  • 定义一系列算法,封装起来,运行时切换。

9. 静态代理和动态代理?

  • 静态:编译期生成;动态:运行时生成。动态代理灵活。

10. 责任链模式?

  • 多个对象处理请求,直到某个对象处理完或传递结束。如 EventDispatch。

(十一)计算机网络方面

1. HTTP 与 HTTPS 区别?

  • HTTPS = HTTP + SSL/TLS,加密传输,端口 443。

2. https, udp, socket 区别?

  • HTTPS 应用层协议;UDP 传输层无连接;Socket 是 API 接口。

3. HTTP 请求过程?

  • DNS 解析 -> TCP 握手 -> 发送请求 -> 服务器处理 -> 响应 -> 断开。

4. TCP/IP 三次握手四次挥手?

  • 握手:SYN, SYN+ACK, ACK;挥手:FIN, ACK, FIN, ACK。

5. HTTP 可靠性?

  • 基于 TCP,保证数据完整有序。

6. TCP/IP 分层?

  • 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。TCP 传输层,HTTP 应用层。

(十二)Kotlin 方面

1. Kotlin 特性?

  • 简洁,空安全,扩展函数,协程,数据类,Lambda。

2. @JvmOverloads?

  • 生成 Java 兼容的重载方法。

3. List 与 MutableList?

  • List 只读,MutableList 可改。

4. 单例方式?

  • object 关键字,懒加载。

5. data 关键字?

  • 自动生成 equals, hashCode, toString, copy。

6. 委托属性?

  • by 关键字,DelegatePattern,Lazy 初始化。

7. with 与 apply?

  • with 返回结果,apply 返回对象本身。

8. Unit 与 Void?

  • Unit 是 Kotlin 类型,Void 是 Java 占位符。

9. infix 关键字?

  • 中缀表达式语法糖。

10. 可见性修饰符?

  • public, private, protected, internal。internal 仅限模块内。

11. Kotlin 与 Java 混合?

  • 注意空安全,扩展函数,协程作用域。

12. 解构?

  • 配合 componentN 函数,提取对象属性。

13. 内联函数?

  • inline,消除 Lambda 开销,配合 crossinline/noinline。

14. 构造方法?

  • primary constructor, secondary constructor,init 块。

15. Sequence?

  • 惰性求值,中间操作不立即执行,适合大数据流。

16. Coroutines?

  • 轻量级线程,挂起恢复,比线程更高效。

17. 可空类型处理?

  • ? 标记,?. 安全调用,!! 强制非空,?: Elvis 运算符。

18. Any 与 Object?

  • Any 是顶层超类,Object 是 Java 顶层超类。

19. 隐式转换?

  • 不支持,需显式转换,避免歧义。

20. 集合遍历?

  • for, forEach, map, filter。

注:本文档仅供学习参考,面试中请结合项目经验灵活作答。

目录

  1. Android 技术面试指南
  2. 第一章 Java 方面
  3. (一)Java 基础部分
  4. (二)Java 集合
  5. (三)Java 多线程
  6. (四)Java 虚拟机
  7. 第二章 Android 方面
  8. (一)Android 四大组件相关
  9. (二)Android 异步任务和消息机制
  10. (三)Android UI 绘制相关
  11. (四)Android 性能调优相关
  12. (五)Android 中的 IPC
  13. (六)Android 系统 SDK 相关
  14. (七)第三方框架分析
  15. (八)综合技术
  16. (九)数据结构方面
  17. (十)设计模式
  18. (十一)计算机网络方面
  19. (十二)Kotlin 方面
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Llama3 中文通用 Agent 微调模型实战教程
  • Flutter 三方库 Arcade 在鸿蒙端的适配与实战
  • 职场效率革命:00 后如何用 Python 实现自动化办公
  • 中国人工智能大模型技术白皮书核心内容解读
  • MCP Server 实现 Excel 表格一键生成可视化图表 HTML 报告
  • C# 调用 Java 的 5 种集成方案对比
  • 大模型参数有效微调(PEFT)技术综述
  • 基于 STM32 的物流分拣小车设计与实现
  • cxx-qt 底层机制:实现 C++ 与 Rust 无缝通信及开发效率提升
  • Java 类、对象与 this 引用入门
  • Java Lambda 与匿名内部类为何不能修改外部变量?解析 Final 与等效 Final
  • Python 职业前景与技能应用场景解析
  • Qwen2.5-7B-Instruct 模型本地部署与 Modelfile 配置实践
  • 基于 OpenClaw 与 Claude 的自动化写作系统搭建
  • Qwen3-4B-Instruct 实战:HR 招聘 JD 生成与面试题库构建
  • 边缘计算设备部署轻量 TensorFlow 模型全流程
  • Transformer 应用于多元时序预测的最佳实践:PETFormer 解析
  • 延迟渲染中的 C++ 实现要点与性能权衡
  • Java JDK 安装与环境配置教程
  • C++ 继承的核心规则与常见陷阱

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online