虾皮秋招面经

一面 10.19

  • 编程题:删除单向链表倒数第n个节点
  • Flutter和其他跨平台框架有什么区别?
  • AtomaticInteger是如何实现的?
  • getStorage持久化存储在本地的文件格式是什么样的?怎么从磁盘中读取的?
  • 在主线程中进行IO操作可能出现什么问题(ANR)?在子线程中操作会有吗?
  • MMKV和SharedPreferences的区别
  • 用protobuf数据协议和SharedPreference的区别
  • HTTP协议的常见响应码
  • HTTP三个版本之间的区别
  • Android中跨进程通信的几种方法,几种方法之间的区别(binder和消息队列)
  • MQTT基于TCP还是UDP,MQTT的优势
  • 用TCP可以做推送吗?还有哪些协议可以推送?
  • 图片加载器用过哪些?Image.network源码看过吗?
  • Android中的数据库如何使用?
  • HashMap和ConcurrentHashMap的区别
  • HashMap和LinkedHashMap的区别
  • 多线程同时访问HashMap可能会发生什么问题?
  • Java中sleep()和wait()的区别
  • 悲观锁和乐观锁
  • 项目中用拦截器做了什么
  • 自己的项目中token有几级,多久过期
  • 项目中的基于拓展方法做屏幕适配
  • HTTPS加密过程,为什么要混合加密
  • 如何知道服务器发来的证书是合法的?

反问,可以再加强算法数据结构、网络、操作系统,一些常问的问题。

二面 10.26

场景拷打穿插八股,逮着简历上写的一个下载器问,问的很细。

面试官没开摄像头,上来就问我实习公司的规模,是不是去的外包公司,我直接???

而且很多时候感觉她没理解我说的东西,问的一些问题也奇奇怪怪的,我之前的回答都说了,结果又问一遍。面试体验不太好。

  • 为什么放弃转正?
  • 下载器的设计架构?用了什么设计模式
  • 单例如何保证对象只被创建一次
  • volatile的功能
  • 什么是线程和进程
  • Flutter下载没有用到多线程,是如何让主线程不卡死的?
  • 实现一个安卓的下载管理器怎么做
  • 下载完成是如何通知主线程的?
  • CPU是如何调度线程和进程的?调度算法?
  • 进程切换开销比线程切换开销大的原因
  • 死锁条件
  • 有哪些锁
  • 使用自旋锁的场景,有什么优点和缺点?如何避免缺点
  • 用过哪些设计模式?工厂模式的应用场景和设计理念?
  • HTTPS相关?如何确认证书的合法性?
  • HTTPS一定安全吗?是否有漏洞?
  • 抓包原理?如何抓HTTPS
  • 网络请求涉及的整个流程
  • DNS会带来哪些问题?DNS劫持是怎么做到的?如何解决?
  • 如何提升HTTPS请求速度
  • 多路复用的原理
  • HTTP2.0 和 HTTP3.0 的区别
  • HTTP3.0 QUIC为什么更快?如何实现可靠性的
  • 下载器缓存策略,如何做本地持久化
  • 图片加载缓存原理,LRU,如何实现图片缓存,用什么数据结构?
  • 哈希表原理
  • Android中解决哈希冲突的方法

难度挺大,出现了好多之前没问过的,像线程调度、HTTPS抓包、DNS劫持、LRU。

已挂。

一面 11.9 iOS

之前随手投的iOS开发,居然发笔试了,做完又给面试了。

  • 对iOS方向怎么想
  • 为什么选Flutter而不是其他跨端框架
  • Flutter的劣势?RN的优势?
  • MQTT订阅发布步骤?为什么MQTT比HTTP更稳定
  • TCP和UDP的区别
  • 多路复用是什么
  • 基于流和基于报文的区别
  • 接收方如何知道发送方流数据的总大小?如何知道从哪一位字节开始?
  • 有直接用TCP实现过连接吗
  • 端口是什么?服务器和客户端的端口分别有什么用?
  • 除HTTP、MQTT外其他的建立连接的方式
  • 服务器如何主动给客户端推送消息?
  • MMKV的优势
  • 了解过mmap吗?
  • DNS
  • HTTPS抓包
  • HTTPS加密过程
  • 如何判断证书是否合法
  • 进程和线程的区别
  • 哪些部分是线程私有的?哪些是线程共享的?
  • 线程间通信的方法
  • 消息队列如何实现进程间通信
  • 什么是管道,常见的管道,Linux中的管道符|
  • 线程安全,有哪些锁
  • 编程题:手写快排

反问:无iOS经验影响大吗?

答:没什么影响,受限于设备原因大部分校招生都没啥iOS的经验。

反问:哪部分比较薄弱?

答:计网的一些细节,某些特性是属于TCP还是HTTP有些记混了,MMKV原理和mmap可以去了解