2024年的6月真是忙碌的一个月,在鸿蒙的一线摸爬滚打,白天与BUG不死不休地缠斗,晚上还要迎战大厂面试官的灵魂拷问,好在天随人愿结果是好的,特此记录下我艰难波折的客户端开发的社招面试之旅。以下面试题全部真实,如有雷同,那就是你面试的我哈哈。
~~~先把题目发出来,后面我慢慢补答案OVO。
目录
1. 基础知识(网络、数据结构、操作系统、并发编程、数据库)
2. Android相关知识
3. Harmony相关知识
4. 性能功耗优化及稳定性方面知识
5. 算法题
6. 项目经历与其他
1. 基础知识(网络、数据结构、操作系统、并发编程、数据库)
1.1 interface和class的区别
转载 interface和class的区别_js interface和class的区别-CSDN博客
【延伸】TypeScript中的type 以及 type 与 interface 和 class 的区别
深入理解 TypeScript 的 type 以及 type 与 interface 和 class 的区别_typescript_Lee Chen_InfoQ写作社区
1.2 Collections.synchronizedMap和ConcurrentHashMap的区别
转载 Collections.synchronizedMap()与ConcurrentHashMap的区别_collections的synchronize两者的区别是什么?-CSDN博客
1.3 http 和 https 的区别
1.4 http1.0和http2.0以及http3.0的区别
HTTP1.0、HTTP2.0、HTTP 3.0区别-腾讯云开发者社区-腾讯云
1.5 Java中静态方法能否访问非静态成员变量和方法
转载 java中静态方法中调用非静态方法_java中静态可以调用非静态么-CSDN博客
1.6 String的拼接方式以及比较
转载 https://www.cnblogs.com/lujiahua/p/11408689.html
1.7 如何保证3个线程顺序执行
转载 如何确保三个线程顺序执行_如何保证3个线程顺序执行-CSDN博客
1.8 sleep和wait方法是否占用CPU
转载 理解线程状态,答疑wait与sleep是否占用cpu资源的问题,再来个小demo_java 线程状态 消耗cpu资源-CSDN博客
1.9 HashMap的存储方式是怎样的,又是如何解决hash冲突的
转载:【Java面试小短文】HashMap是如何解决Hash冲突的?_hashmap解决下标冲突-CSDN博客
1.10 SQLite数据库损坏如何修复
微信 SQLite 数据库修复实践-腾讯云开发者社区-腾讯云
1.11 SQLite如何保证线程安全
转载 https://www.cnblogs.com/linybo/p/11934955.html
https://www.cnblogs.com/HelloCodeWrold/p/12967926.html
1.12 SQLite的日志方式
转载 [SQLite]浅析其二——SQLite数据库的日志_sqlite 日志-CSDN博客
1.13 SQLite的连接池
1.14 SQLite的事务
Blogs/Basic/Sqlite的事务,锁和WAL模式.md at master · LeoMobileDeveloper/Blogs · GitHub
1.15 SQLite的索引和视图
1.16 说说okHttp的原理
转载 https://www.cnblogs.com/fnlingnzb-learner/p/16694470.html
https://segmentfault.com/a/1190000041244286
1.17 对称加密和非对称加密的区别
1.18 锁升级和锁优化
转载 synchronized(下)锁优化和锁升级过程_synchronized 轻量级锁升级过程-CSDN博客
12.synchronized的锁重入、锁消除、锁升级原理?无锁、偏向锁、轻量级锁、自旋、重量级锁-腾讯云开发者社区-腾讯云
1.19 Java的线程池参数,核心线程数和最大线程数如何设置
Java线程池如何合理配置核心线程数-腾讯云开发者社区-腾讯云
https://www.cnblogs.com/thisiswhy/p/12690630.html
1.20 SQLite数据库升级流程,假设有1.0,2.0和3.0这3个版本,可以直接从1.0升级为3.0么
转载 https://www.cnblogs.com/baiqiantao/p/10444800.html
2. Android相关知识
2.1 Android的线程模型
转载 Android 线程模型和Looper深入理解_looper和线程 android-CSDN博客
https://www.cnblogs.com/aimqqroad-13/p/8820271.html
2.2 Android是如何保证线程安全的
2.3 Handler机制
转载 全面解析 | Android之Handler机制 - 简书
Android :安卓学习笔记之 Handler机制 的简单理解和使用_android handler 机制-CSDN博客
2.4 Android应用启动过程
搞懂Android应用启动过程,再也不怕面试官了-腾讯云开发者社区-腾讯云
2.5 Android的UI绘制流程
Android高频面试专题 - 提升篇(二)View绘制流程-腾讯云开发者社区-腾讯云
转载 Android进阶宝典 --- UI的绘制流程_安卓ui设计设计流程图-CSDN博客
2.6 Android的View如何获取宽高
转载 Android获取View宽高的常见方式_android 获取view的宽高-CSDN博客
2.7 Android的进程间通信方式
转载 Android 进阶13:几种进程通信方式的对比总结_android 进程间通信-CSDN博客
2.8 Android的线程间通信方式
转载 https://www.cnblogs.com/nhgtx/p/16921667.html
android线程间通信的几种方法_Android进程间和线程间通信方式-腾讯云开发者社区-腾讯云
2.9 MVC/MVP/MVVM和MVI的区别
转载 Android 架构漫谈-从 MVC 到 MVI - 晨鹤部落格
https://www.cnblogs.com/papering/p/17583548.html
2.10 Android的启动方式
Android基础:最易懂的Activity启动模式详解-腾讯云开发者社区-腾讯云
2.11 View.INVISIBLE和View.GONE的差异
转载 https://www.cnblogs.com/zhenji-li/p/17068436.html
2.12 Android的Window
转载 https://juejin.cn/post/6888688477714841608
Android视图体系—理解Window概念_android 视图window-CSDN博客
2.13 Android的Binder机制与原理
Android跨进程通信:图文详解 Binder机制 原理-腾讯云开发者社区-腾讯云
2.14 Activity A页面启动Activity B页面的生命周期顺序
转载 Activity A页面启动Activity B页面的生命周期顺序(多种情况)_activitya启动activityb生命周期-CSDN博客
2.15 Android如何完成组件复用
2.16 Android的插件化原理
转载 Android插件化原理与方案详解_android 插件化原理-CSDN博客
Android-Notes/notes/android/Android插件化技术——原理篇.md at master · Demo-H/Android-Notes · GitHub
3. Harmony相关知识
3.1 HarmonyOS的线程模型,它是如何保障线程安全的
转载 https://www.cnblogs.com/HarmonyOSDev/p/17728498.html
3.2 TaskPool和Worker的应用场景和差异
3.3 HarmonyOS的Stage模型
3.4 ArkUI的常见装饰器
HarmonyOS 应用开发 —— 常用装饰器整理-腾讯云开发者社区-腾讯云
3.5 ArkTS和Java在开发视角上的差别
鸿蒙HarmonyOS应用开发为何选择ArkTS不是Java?-CSDN博客
3.6 ArkTS的内存管理机制
转载 OpenHarmony 资源调度之内存管理源码分析_arkts的内存管理机制-CSDN博客
OpenHarmony实战开发-内存管理purgeable内存开发指导_openharmony 内存管理-CSDN博客
3.7 ArkTS异步编程,Promise是如何实现的(宏任务和微任务以及执行顺序)
转载 华为开发者论坛
ArkTS异步机制与执行顺序 -鸿蒙开发者社区-51CTO.COM
3.8 har、hap和hsp的区别
3.9 ArkUI渲染机制
转载 鸿蒙ArkUI:【从代码到UI显示的整体渲染流程】-CSDN博客
ArkUI节点模型和渲染机制-鸿蒙开发者社区-51CTO.COM
3.10 HarmonyOS的架构设计思路,它在设计上更偏向Android还是IOS
转载 鸿蒙系统架构解析:深入理解分层设计与功能实现_三方库在鸿蒙系统中的分层-CSDN博客
3.11 ArkUI如何获取组件宽高
3.12 Harmony自定义组件如何使用
4. 性能功耗优化及稳定性方面知识
4.1 如何发现内存问题、定位手段和工具、如何分析
转载 https://www.cnblogs.com/dongxb/p/17922486.html
4.2 内存泄漏的原因和解决方案
4.3 内存泄漏监控工具的原理,它们是如何检测到内存泄漏的
转载 Android---内存泄漏检测核心原理_android内存泄漏检测工具原理-CSDN博客
4.4 Android中如何实现动画优化
转载 Android属性动画优化_android setrepeatcount 无法循环-CSDN博客
https://blog.51cto.com/u_12947/6397649
4.5 JVM和Android的内存模型
转载 Android内存管理(JVM 、DVM(dalvik) 、ART简单介绍)-腾讯云开发者社区-腾讯云
4.6 GC回收的对象和FullGC的触发条件
转载 GC详解及Minor GC和Full GC触发条件总结_full gc和minor gc区别,及各自的触发条件-CSDN博客
4.7 OOM问题如何定位,如何解决
转载 马上: Android线上OOM问题定位解决分享及总结_android oom如何定位-CSDN博客
5. 算法题
5.1 当前有一系列任务A,B,C,D等,给定各任务的依赖关系,比如B依赖A完成,C依赖A和B完成,D依赖B完成,任务本身不能被中断。请设计一套接口,使得各任务能够按照依赖关系完成,如果中途正在进行任务,任务不能被打断,但是任务可以暂停和继续。
略(拓扑排序 + 并发控制)
5.2 手写生产者和消费者算法
转载 生产者―消费者问题算法的实现_生产者消费者算法-CSDN博客
5.3 LeetCode 打家劫舍2
5.4 完美洗牌算法
转载 https://www.cnblogs.com/greyzeng/p/16410631.html
5.5 现有一棵二叉树,给出每个节点的值,判断二叉树上是否存在一条从根节点到叶子节点的路径,使得路径上的值的和等于目标值,如果该路径是从根节点到非叶子节点呢
略(递归)
5.6 制作日历
转载 https://www.cnblogs.com/jiakecong/p/16427937.html
5.7 LeetCode 括号匹配
6. 项目经历与其他
6.1 你最有成就感的项目经历,你是如何应对挑战的
6.2 现网问题处理流程和解决思路
6.3 如何协调项目上下游的资源,如何处理跨部门沟通上的障碍
6.4 应用的稳定性问题如何监控、如何闭环
6.5 你个人的优势和劣势,未来的职业规划和发展方向
6.6 如何看待初级开发、中级开发和高级开发的角色定位
7. 延伸阅读
https://blog.yorek.xyz/android/paid/master/storage_3/#_2
AndroidNote/OperatingSystem/AndroidKernal at master · CharonChui/AndroidNote · GitHub