滴滴的秋招的话,面试通过的话,10分钟后会邀请你进入下一场,共三轮技术面。
一面(过)
一面的话就是技术面,主要考察项目的细节,比如你用的什么技术实现的这个功能,为什么这样用。
问:首先做一个自我介绍吧
答:自我介绍.......
问:你第一个项目里用到LruCache,你知道它用的什么数据结构吗
答:LinkedHashMap
问:那你知道LinkedHashMap和HashMap的区别嘛,或者说为什么要用LinkedHashMap
答:多维护一张双向链表,有顺序......
问:只是有顺序嘛
答:不对,如果多次访问B,但是最后一次访问A,删除的还是B。LFU
问:你这里用到了内存缓存,那你缓存的大小又没有限制呢
答:根据设备可用内存的20%
问:如果你设备为8G,那你当前的App的内存限制在1.6G嘛,不合理吧
答:对,应该是APP可用内存的20%
问:你这里用到了Canvas绘制波形图,具体怎么实现的,用了什么API
答:Path、Paint绘制,巴拉巴拉
问:你第二个项目里用到了远程更新,使用到了Downloader库吧,在下载过程中涉及到哪些问题,HTTP的请求头是怎么样的。
答:断点续传,HTTP Range请求,获取总文件大小、记录已经下载的字节数,服务端返回206,RandomAccessFile以追加模式写入,下载进度持久化。
问:你是怎么通过MethodChannel实现拉起安装页的
答:MethodChannel统一管理权限获取,通过ACTION_ON拉起安装页
问:你第二个项目里用到了MethodChannel,那你讲一下除了MethodChannel,还有哪些与原生交互的方式吧
答:MethodChannel、、Pigeon、FFI,Pigeon是基于MethodChannel的,其实就是生成MethodChannel代码,和MethodChannel相比,性能差不多,开发效率更高,更易维护;FFI类似于JNI,通过Dart来与C/C++交互。
问:你项目里用到MVVM架构,那你讲一下MVVM架构吧
答:巴拉巴拉
问:你讲一下线程和协程吧
答:我不仅给你讲线程和协程,我还给你讲一下进程
问:你对AI的看法
答:巴拉巴拉巴拉
二面(过)
二面主要是业务面,会问你这个项目有没有落地,有没有用户数据。
问:你先讲一下Kotlin的一个优势在哪
答:巴拉巴拉
问:你项目的一个框架是怎么样的,具体讲一下分层,以及各层的作用
答:巴拉巴拉
问:您能讲一下MVVM架构,以及和其他架构的相比,优势在哪里
答:巴拉巴拉
问:View层是怎么更新UI状态的
答:StateFlow,ViewModel暴露StateFlow,讲StateFlow、Flow、SharedFlow....
问:你讲一下什么是协程、什么是线程,什么情况下会用到协程、什么情况下用到线程
答:巴拉巴拉
问:你第一个项目里有用到缓存来优化用户体验,你在线上测试过没有,你这项目交付没有。
答:没有测试过,交付了,甲方是....
问:你做这个项目的团队组成是怎么样的
答:两个后端、两个前端、两个QT、一个移动端
问:你项目里谈到绘制波形图,你是怎么绘制的,全部绘制的嘛,性能怎么要求的
答:不是全部绘制,根据当前屏幕尺寸,和比例缩放进行聚合操作来展示
问:你一开始就想到了嘛
答:没有,一开始16个轴,每轴500万个点直接上,发现加载时长都要15秒....
问:你简历上写了解OkHttp,那你看过OkHttp的源码嘛,你讲一下拦截器链吧
答:基于责任链模式,巴拉巴拉
问:你对AI的看法
答:巴拉巴拉
问:你平常怎么用AI的
答:巴拉巴拉
问:如果同个模型,你发出同样的请求,返回不同的结果,你觉得是什么原因导致的
答:巴拉巴拉
问:你刚刚谈到了MCP,那你觉得MCP和Skill有什么关系
答:巴拉巴拉
后面问了太多AI相关的问题,我忘记了。
三面的话,我没怎么整理,大部分也是问AI之类的,给我的感受的话,现在都会问你怎么用AI的,AI对你的工作影响是怎么样的。