小米23届校招Android面经(一、二面)

一面
自我介绍,因为提到了大学课程的安卓学的很浅,基本上靠自学,问了一下怎么学习的

计算机网络
tcp和udp的区别
怎么理解有连接和无连接
http和tcp的区别
get和post有什么区别
怎么选择get和post

开发使用的是java还是kotlin,回答主要使用java,有学过Kotlin一年,然后开始问java基础
怎么理解面向对象 
我背书贼拉跨,说了一下自己的理解
有没有了解除了面向对象的其他语言
抽象类和接口的区别
内部类访问的外部类变量为什么要用Final修饰,当时声音听的不是很清楚,当时没反应过来,后来复盘的时候知道原来问的是这个
final有什么用
final的回答里面提到了final变量能够通过反射强制修改,但是会有可见性问题,面试官顺着开始问多线程
怎么实现多线程
多线程同步,提到了重入锁,cas自旋锁,随后面试官让简单说一下这些锁
synchronized修饰太重了,如果只想要保证可见性怎么办  volatile,为什么可以保证可见性,答会强制从主内存获取最新
sleep和wait的区别,答的不是很好这里,基本上没答上

android部分
经典activityA->activityB生命周期调用顺序
activity启动模式 ,随后让简单说一下四个启动模式
singleTop,singleTask,singleInstance的生命周期多了一个什么环节 onNewInstance,这里没答上,面试官告诉了正确答案
service启动模式 哪个启动模式的生命周期更长 这里理解错了,我理解是bind的生命周期有四个,start只有三个,面试官想问service的回收,就是startService不会跟随activity销毁,bind会跟随绑定的所有activity销毁后跟随销毁
因为平时开发没怎么用到,理解不是很好,这里答错了,面试官很耐心的解释了
广播,有用过嘛 答:很少 问:如果接到需求会用嘛 答:知道,broadcastreceiver接受,sendBroadCast发送,随即引申到跨应用传递数据
intent binder 广播 cp,背书不熟练忘记了cp,哈哈,本人真的记忆不好
程序内部广播 答 本地广播,不会传递到外部,所以效率更高

算法
反转链表

二面
上来互相做了一个自我介绍
主要问项目,中途问了mmkv,答不会(没用过),没有什么八股文,算法是给链表头节点,求倒数第k个节点,快慢指针,给题的时候就问思路,答快慢指针,五分钟写了,牛客的算法系统出了点小问题,但是无伤大雅
反问 
工作地点在哪 北京
还有三面嘛 应该没有了
总体自我感觉还行,许愿offer,今年不好找工作啊,早点上岸早点安心



#面经##面试##小米科技##安卓开发##Android#
全部评论
offer了吗兄弟
点赞 回复 分享
发布于 2022-10-16 12:51 辽宁
楼主现在是拿到他们的offer了么
点赞 回复 分享
发布于 2022-10-05 19:18 山西

相关推荐

2025 年 9 月 17 日自我介绍 / 项目背景1. 自我介绍。2. 你的 App 在哪些应用商店上架?当前用户规模是多少?3. 这个 App 分了哪几个主要模块(功能)?社交 / 即时通讯相关1. 社交功能是什么样的?有没有即时通讯/聊天?2. 聊天功能是怎么实现的?消息发送/接收的流程是什么?3. 聊天消息怎么存储(server / DB / 消息队列 等)?群组、好友列表、通讯录是怎么管理的?4. 消息推送你接入了哪些厂商(如 APNs、小米等)?到达率和典型延迟是多少?技术选型 / 跨平台1. 为什么选择 Flutter 做跨平台开发?优点和限制是什么?2. 如果需要用到原生平台能力,如何在 Flutter 中与原生通信(如何实现、常用方案)?3. 你了解 Flutter 的渲染流程吗?和 Android 原生渲染有什么差异?具体的渲染树(Widget/Element/RenderObject/Layer)是如何协作的?Dart / 并发 / 内存1. 你了解 Dart 的 Isolate(或类似并发模型)吗?什么时候适合用 Isolate?内存是否隔离?2. 在多线程/并发场景中,如何保证线程安全?synchronized 和 ReentrantLock 有什么区别?公平锁与非公平锁是什么?3. 线程池(ThreadPool)创建时有哪些核心参数?每个参数的作用是什么?(例如:核心线程数、最大线程数、队列等)Android / 底层机制1. Android 的进程间通信(Binder)原理是什么?除了 Binder,还有哪些进程间通信方式?各自适用场景是什么?2. 为什么 Linux 已经有很多跨进程通信方式了还要用 Binder3. Android 自定义 View 的绘制流程(create → measure → layout → draw)了解多少?自定义组件通常怎么实现?4. Handler 的作用?图片 / 缓存 /网络1. 项目中用到哪些图片库?图片加载库一般有几级缓存(内存/磁盘/协商/强缓存)?缓存的淘汰策略如何实现(LRU、LFU 等)?2. 网络层你用的是什么(如 dio 等)?GC / 内存回收1. Java 的垃圾回收(GC)策略你了解多少?分代回收(新生代/老年代)基本思想是什么?常见回收算法有哪些?算法 / 编程题1. 请写出一个算法:求二叉树的最大深度(并说明思路)。其他 & 反问1. 团队主要是做什么?(动态化/小程序容器,RN,WebView)2. 有没有用到在 App 内动态加载 APK(用到了动态加载class)天呐我感觉这个面试官超级无敌厉害,符合我对安卓大佬的想象,好多没答上来的……应该没有二面了
查看23道真题和解析
点赞 评论 收藏
分享
评论
1
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务