标签题目
客户端开发相关面试题
HashMap 为什么会引入红黑树?
HashMap 引入红黑树,是为了解决哈希冲突严重时链表过长导致查询退化的问题。当同一个桶中的节点数量过多,链表查找会从平均常数级退化为线性级,红黑树可以把桶内查找复杂度降低到对数级,提升极端场景下的稳定性。
Android Activity 生命周期是什么?
Android Activity 生命周期描述一个界面组件从创建、可见、可交互、暂停、停止到销毁的状态变化。核心回调包括 onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart,实际开发还要理解配置变更、进程回收、状态保存和资源释放。
C++ 基类析构函数为什么通常要声明为虚函数?
C++ 基类析构函数通常要声明为虚函数,是为了保证通过基类指针或引用删除派生类对象时,能先调用派生类析构函数,再调用基类析构函数,完整释放派生类资源。否则行为可能未定义,容易造成资源泄漏或清理不完整。
C++ 如何限制类对象只能在堆上或栈上创建?
C++ 限制对象只能在堆上或栈上创建,本质是控制构造、析构和释放入口。只能堆上创建通常把析构函数设为 private 或 protected,并提供 destroy 接口;只能栈上创建通常禁用 operator new 和 operator new[],阻止动态分配。
客户端 Crash 发生后如何定位问题?
客户端 Crash 定位要从复现、日志、崩溃栈、符号化、版本环境、用户操作路径和近期变更入手,先判断是 Java/Kotlin 异常、Native 崩溃、ANR、OOM 还是系统兼容问题,再结合监控聚合和最小复现找到根因。
Java 有哪些常见加锁机制?
Java 常见加锁机制包括 synchronized、ReentrantLock、ReadWriteLock、StampedLock、原子类和基于 AQS 的同步器。面试重点不是罗列名称,而是说明它们的互斥语义、可重入性、公平性、可中断、条件等待、读写并发和适用场景。
Java 内部类为什么可以访问外部类成员?
Java 内部类能访问外部类成员,本质上不是虚拟机给了它特殊权限,而是编译器在字节码层建立了外部实例引用和访问通道。非静态内部类会携带指向外部对象的隐藏引用,因此能通过这个引用读取外部对象的字段和方法;对私有成员的访问则由同一 nest 的访问规则或编译期生成的桥接访问方法支持。
ConcurrentHashMap 的实现原理是什么?
ConcurrentHashMap 的核心是把哈希表操作拆成可并发执行的小粒度步骤:读操作大多依赖 volatile 可见性和链表或树查找,无需整体加锁;写操作在空桶上用 CAS 放入节点,在冲突桶上锁住桶头节点;扩容时通过 ForwardingNode 和协助迁移让多个线程共同搬迁数据。
一个进程最多能打开多少文件描述符,受哪些限制?
一个进程最多能打开多少文件描述符,没有单一固定答案,取决于进程级软硬限制、系统级文件句柄上限、内核内存、服务管理器和容器配置,以及程序自身使用的 I/O 模型。实际排查要同时看 ulimit、/proc 限制、sysctl、systemd LimitNOFILE 和进程当前已打开的描述符。
HTTPS 为什么结合使用对称加密和非对称加密?
HTTPS 同时使用非对称加密和对称加密,是为了兼顾安全密钥交换、身份认证和传输性能。非对称加密适合解决陌生双方如何安全协商密钥和验证服务器身份的问题,但计算成本高;对称加密速度快,适合保护大量业务数据,因此握手阶段协商会话密钥,传输阶段用对称密钥加密数据。
Objective-C和Swift对比,安全性体现在什么方面?
Swift相对Objective-C的安全性,核心不是“更防黑客”,而是语言层面对类型、空值、内存、可变状态、错误处理和并发访问施加了更多编译期约束,把一部分Objective-C中常见的运行时崩溃、野指针、nil误用、类型误判和共享状态问题提前暴露。但Swift并不是绝对安全:强制解包、隐式解包、Any、unsafe pointer、Objective-C桥接、@objc动态派发和不当并发仍然会把风险带回来。
https,客户端拿到服务端的证书后是怎么验证证书的合法性?
HTTPS 证书合法性验证的本质,是确认服务端公钥可信地属于当前访问的域名。客户端会构建证书链、逐级验证签名、确认根 CA 受信任,再检查域名、有效期、用途、吊销状态和握手签名绑定。
如何理解小爱同学这类 AI 助手产品的用户价值、核心场景和交互入口?
这题来自“小爱产品”的理解,且上下文提到手机端入口交互和终端展示,所以答案要围绕 AI 助手的产品本质:它不是单一 App,而是跨设备、跨系统能力的交互层。用户价值可以拆成三类:降低操作成本、连接多设备场景、提供个性化和主动辅助。核心场景包括手机系统任务、智能家居控制、信息查询与内容服务、车载/穿戴/音箱等多终端协同、无障碍和老人儿童场景。交互入口要按主动/被动、语音/触控、前台/后台分层:唤醒词、长按电源键或快捷键、桌面组件、锁屏、负一屏/搜索、耳机和音箱、车机、智能家居面板。终端展示不应只靠语音播报,而要有卡片、确认页、多轮澄清、执行反馈和可撤销机制。
百度地图面向国人出境游,如何结合语音交互和 AR 设计国际化功能、卖点和差异化?
这题是百度地图产品运营群面,要求围绕“AI 公司定位、百度地图语音交互、AR 功能、国人出国旅游痛点、国际化功能、卖点、差异化”做方案。好答案要先拆用户旅程:出发前规划、落地后找路、跨语言沟通、公共交通/步行/打车、景点游览、安全和应急。再把语音交互和 AR 放进具体痛点:语音解决低输入成本和中文理解,AR 解决陌生环境方向感和空间识别。功能可以设计为出境游中文语音向导、离线城市包、AR 步行导航、POI 双语识别、公共交通规则提示、行程卡片、景点 AR 讲解、应急求助与翻译。差异化不要空喊“AI 更强”,而要强调服务中国游客的场景化:中文语音、多模态导航、离线可用、旅行链路闭环、从路线到解释再到应急的完整体验。