当前位置: 首页 > 面试经验 >

淘天 24秋招 客户端一面

优质
小牛编辑
89浏览
2023-08-23

淘天 24秋招 客户端一面

之前牛客上联系的淘天的其他部门,直接发简历给到组内的负责人。被约面试,没有走系统内推,被面试官告知可以不走系统,能拿到offer。

个人感觉这种流程不是很可靠,只能先面,后续有无推进都随缘了

面试内容:

算法题:定义一种特殊数对(i,j)满足:0<=i<j<nums.length,lower<=nums[i]+nums[j]<upper;找出特殊数对

发题目到邮件,但是因为太卡了,那个系统写一半就不让继续写了,只能讲述一下思路,归并排序然后递归比较;

  1. Java中Hash Map线程安全如何保证?
  2. 说了HashTable是整体加锁,效率太低,后面改成ConcurrentHashMap,分段锁
  3. 那ConcurrentHashMap性能是否好?
  4. 没太理解面试官想问的点,回答性能很好啊。
  5. 读操作(查询)可以并发执行。不同的线程可以同时读取不同的片段,无需相互阻塞。
  6. 写操作(插入、更新、删除)只会锁定对应的片段
  7. 问Java8之后对ConcurrentHashMap的优化
  8. 一开始没想起来,后来经过提醒想起来了,讲分段锁给换了,不用Segment分段锁,改成CAS+红黑树+链表
  9. CAS+synchronized 实现颗粒度更低的锁
  10. ConCurrentHashmap 每次扩容是原来容量的2倍,而且扩容的时候也能进行读写操作
  11. 那这里面CAS有什么问题?
  12. 想半天,想到了ABA的问题
  13. 还会有自旋的开销
  14. 那如何解决CAS的ABA问题?
  15. AtomicStampedReference 提供的有版本号
  16. 增加一个中间状态
  17. 使用带有时间戳的原子类,AtomicStampedLong
  18. 但是这些其实本质上就是多做了几次比较,能解决ABA问题,那也会有ABABABA这种情况
  19. 为什么直接调用方法和访问字段的性能通常比使用反射更好
  20. 反射需要进行额外的运行时类型检查和解析。
  21. 看你们有做过内存优化相关的,怎么做的
  22. 分两个大的方向,一个是资源优化,比如使用合适的图片缓存策略和图片压缩方式,用Webp这种格式
  23. 另一个就是偏解决内存分析的问题,如内存抖动等等,对内存管理用一些常见的工具监测
  24. 有用过哪些内存监测的工具?
  25. Android studio自带的Memory Profiler,可以查找对象的引用链和内存泄漏情况
  26. 使用 LeakCanary,定位内存泄漏的位置
  27. Java堆方向的分析MAT
  28. 那有没有做过这种内存线上监控,怎么实现?
  29. 没有做过,自己了解可以去实现类APM这种工具
  30. 监测一些内存快照,监测一些关键指标,如CPU使用率这种
  31. Android签名的流程和原理
  32. 密钥对生成:首先,使用 Java 的 keytool 工具生成一个密钥对。
  33. 生成证书请求:使用私钥生成一个证书请求
  34. CA 的签发:将证书请求发送给 CA 进行签发
  35. 开发者使用密钥对中的私钥对应用进行签名
  36. 将 CA 签发的数字证书(即公钥)添加到应用的签名区域中。
  37. 如何生成摘要?
  38. MD5、SHA、base64 的加密算法,在打包时配置build.gradle,在构建过程中自动生成摘要文件
  39. 有了解现目前Android签名有几个版本?
  40. 不是很了解,知道v1,v2,v3,v4(Android 11)
  41. v1是基于基于JAR签名规范实现,使用RSA和SHA-1算法组合签名,存在相对较大的安全,META-INF目录下的文件并不在校验范围内
  42. v2全文件签名方案,Android 7引入的,通俗点说就是签名信息不再以文件的形式存储,而是将其转成二进制数据直接写在apk文件中
  43. v3支持 APK 密钥轮替,这使应用能够在 APK 更新过程中更改其签名密钥
  44. v4 Android 11 将签名存储在单独的 .apk.idsig 文件中,也支持ADB 增量 APK 安装
  45. OpenGL ES的渲染流程
  46. 输入阶段(Input Stage):该阶段负责接收场景数据,包括顶点位置、纹理坐标、法向量等。
  47. 顶点着色器阶段:在这个阶段,顶点着色器对输入的顶点进行处理,执行各种变换操作,如模型变换、视图变换和投影变换
  48. 图元组装阶段,几何着色器阶段(可选)
  49. 光栅化阶段,就是给图元放在对应的位置,就是转成片段(fragement),我们手机上的像素
  50. 片段着色器阶段,对每个片段处理
  51. Tcp的可靠性怎么实现
  52. 面向连接传输,三次挥手,四次握手
  53. 序列号和确认应答
  54. 数据包重传
  55. 滑动窗口,拥塞机制
  56. Android虚拟机是什么?
  57. 早期的Dalvik,现在的ART,编译生成DEX文件
  58. JAR包和APK的区别?性能方向?
  59. Dex文件相当于将多个class文件合并在一起之后再进行压缩,加载类时对dex需要一次IO可以加载很多新类,而class需要加载多次IO
  60. Android是基于寄存器式的虚拟机,直接经由CPU运算,运算的速度就会更快,移动设备本身性能就不行,所以用这个更好,但是带来的包的内容会更大

反问,业务方向,技术方向,流程推进等等

#淘天##Android面经##客户端面经##许愿offer##阿里#
 类似资料: