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

美团24秋招 客户端一面

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

美团24秋招 客户端一面

下午2点半HR打电话,约面试时间,为了方便就约到了4点半。

睡了一觉醒来就直接去面试,面试过程中都不知道自己在说啥

面试内容如下:

  1. 简历里面有说到做硬件视频流的推送,说如果你来做的话如何做
  2. 调取CameraX等框架获取视频流帧数据
  3. 编码,使用MediaCodec对视频帧数据进行编码(就是压缩的意思,因为数据太大)
  4. 打包:编码后的视频帧数据进行打包
  5. 通常使用容器格式(如MP4、FLV等)
  6. 流媒体协议,如RTMP、RTSP等进行封装
  7. 传输:用RTMP、RTSP、Http协议传输
  8. 解封加解码:接收端解封工具解封,然后用MediaCodec解码
  9. 存储
  10. RTMP和HTTP的区别?
  11. RTMP这种更适合用来音视频和流媒体传输,可以低延迟,实时传输,HTTP这种就静态资源比较多
  12. 都是TCP为传输层协议
  13. OSI的七层模型
  14. 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
  15. TCP和UDP区别
  16. 面向链接和无连接,对应的传输速率等就有区别
  17. 你自己有了解这些网络底层的东西吗?
  18. 有看过OKHTTP的原理:
  19. 创建请求quest之后,OkHttpClient调用newCall()将Request封装成一个Call对象
  20. 同步请求,调用Call的excute()方法,在调用Dispatcher的excuted(),放入runningSyncCalls队列,进入拦截器链,发送请求,获得response后,调用finished出列;
  21. 异步请求,调用enqueue()方法
  22. 通过判断请求线程池里面的 同一地址的请求是否达到5,线程是否达到64
  23. ture的话,进入runningAsyncCalls队列,然后调用拦截器链条,发送请求
  24. false的话,进入readyAsyncCalls队列,等待条件满足时调用promoteCalls()方法进入上个步骤
  25. 后续执行发送请求,获得response后,调用finished出列
  26. 拦截器链,按顺序遍历interceptorList(拦截器链,这里面拦截器使用的是责任链的模式)
  27. 自定义拦截器可以自定义单个拦截器,也可以自定义拦截器链路的顺序
  28. 涉及的线程池一共两个:
  29. Dispatcher处理请求时候内部的excuteService线程池,是一个核心线程为0,非核心线程不限制的线程池
  30. 内部是一个同步队列,先来先出
  31. 发送请求的线程池,支持最大5个链路的keep-alive连接,并且默认keep-alive的时间是5分钟。
  32. 拦截器的类型有哪些?
  33. 重试及重定向拦截器 RetryAndFollowUpInterceptor
  34. 封装拦截器 BridgeInterceptor
  35. 缓存拦截器 CacheInterceptor
  36. 连接拦截器 ConnectInterceptor
  37. IO拦截器 CallServerInterceptor
  38. 自定义的拦截器
  39. 拦截器的执行顺序
  40. 先按照addInterceptor() 设置的顺序遍历,再按 addNetworkInterceptor() 设置的顺序遍历
  41. 如何解决线程冲突
  42. 保证线程安全,使用一些锁机制
  43. Java的垃圾回收机制
  44. 从GC roots遍历可达就说明有引用,不删除,其他删除
  45. 常见的算法有哪些?
  46. 标记清除,标准整理法,复制清除法
  47. Android里面常见的嵌套解决方法
  48. 不同方向的嵌套滑动
  49. ViewPage和RecyclerView嵌套,ScrollView嵌套RecyclerView
  50. 相同方向的嵌套滑动
  51. ScrollView嵌套ScrollView,NestedScrollView + RecyclerView
  52. 自定义的
  53. NestedScrollingParent和NestedScrollingChild
  54. Android 手势响应流程
  55. 当一个View接收到触摸事件后,它首先检查是否需要拦截这个事件,即判断是否要将事件交给自己处理。这个判断是在ViewGroup的onInterceptTouchEvent()方法中完成的。
  56. 在自己的onTouchEvent()方法中处理事件
  57. 手势检测,Android提供了GestureDetector类来帮助我们检测常见的手势并进行回调
  58. 如果出现事件冲突如何解决
  59. 外部拦截法 - 在父View中拦截事件,避免传递给子View
  60. 内部拦截法 - 先传递给子View,子View自己决定是否拦截
  61. 事件分发机制

感觉答的不是很好,刚刚睡醒,特别迷迷糊糊的,说话都不清晰,舌头打结!

最后面试官也没让手撕代码,说时间不太够了。反问了一下业务方向和技术方向

自己真的是太菜了,要学习的地方还很多的

 类似资料: