美团24秋招 客户端一面

之前面的到家事业部,好像不合适。被转到了点评这边,目前美团已经OC了,之前太忙没顾得写面经,现在来回馈平台,写面经攒人品!顺便许愿其他的流程能OC

一面时间:2023.09.04

面试内容:

  1. Android账号体系实现多端密码验证同步怎么做?
  2. 请求后使用SharedPreferences保存token,然后以后的网络请求时,客户端先查询本地的token
  3. 在token保存时候,再打一个时间戳,或者设置一个时间变量,保证它的时效性
  4. 当Token过期的时候,可以分为手动处理和自动处理,手动处理跳转到重新登录的页面,自动处理调用请求函数重新获取,存储
  5. 当一端修改完密码后,让服务端发送请求给客户端,客户端接收到请求后,请求验证token时效性。如果请求错误,调用重新登录页面。
  6. 同时可以使用定时器,去定时更新Token的时效性
  7. 可以使用java.util.Timer
  8. Android 实现三方登录流程
  9. 客户端接入第三方SDK,也可以用集成框架,如SharedSDK;
  10. 发起登录授权请求:当用户选择第三方登录时,你的应用需要调用相应 SDK 提供的方法发起登录授权请求。
  11. 客户端使用上一步获得的授权,向认证服务器申请令牌。
  12. 认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
  13. 获取用户信息:使用授权码或访问令牌,在你的应用中向提供商发送请求,获取用户的相关信息,如用户ID、昵称、头像等
  14. 使用插件化的时候,如何解决资源冲突的问题?
  15. 在做插件化过程中,宿主需要用到插件的资源,涉及到加载插件的资源;因为插件是以apk的方式存在的,所以插件的ID和宿主的ID可能导致重复;
  16. Android项目中的资源常规是通过R文件来索引的。打包的时候aapt将工程中的资源名与id在R文件中映射起来。使用资源时是通过Resources获取的
  17. 经过上述的处理后,插件的资源和宿主的资源是混合再一起的,因为所有的资源索引不做处理时都是以0x7faabbbb格式按顺序生成的。所以会存在插件资源ID和宿主资源ID冲突的情况
  18. 资源隔离:资源隔离就是宿主和插件使用不同的Resources对象,这样使用的资源文件不同,不存在冲突。
  19. 宿主和插件的资源无法共享,使用起来不太方便
  20. 修改资源ID:
  21. Android的资源id是aapt生成的,修改aapt,让插件中的资源id不从0x7f开始,比如从0x6f开始
  22. 生成插件apk后,修改插件apk中resources.arsc文件。
  23. 难度太大
  24. 免资源固定方案:
  25. 处理 java 代码中引用宿主的资源
  26. 需要在编译过程中处理 R.jar,移除 class 中所有的 final 字段,就可以保证插件中引用宿主的资源 id 全部通过 R 进行引用
  27. 处理 xml 代码中引用宿主的资源
  28. 通过反编译修改插件中的public.xml文件中的索引值,以及修改smali中的R类值
  29. App打包的流程
  30. AIDL,将项目中的aidl文件编译为java文件,AIDL用于进程间通信
  31. 生成buildconfig:在项目中配置了 buildConfigField等信息,会在BuildConfig class类里以静态属性的方式展示
  32. 合并Resources、assets、manifest、so等资源文件:
  33. 资源处理使用的是aapt2.0
  34. AAPT 工具负责编译项目中的这些资源文件,所有资源文件会被编译处理.
  35. XML 文件(drawable 图片除外)会被编译成二进制文件,所以解压 apk 之后无法直接打开 XML 文件
  36. 但是 assets 和 raw 目录下的资源并不会被编译,会被原封不动的打包到 apk 压缩包中
  37. 资源文件编译之后的产物包括两部分:resources.arsc 文件和一个 R.java。前者保存的是一个资源索引表,后者定义了各个资源 ID 常量
  38. 编译java文件(用到的工具 javac )
  39. java文件包含之前提到的AIDL 生成的java文件
  40. java代码部份:通过Java Compiler 编译项目中所有的Java代码,包括R.java.aidl文件生成的.java文件、Java源文件,生成.class文件。在对应的build目录下可以找到相关的代码
  41. kotlin代码部份:通过Kotlin Compiler编译项目中的所有Kotlin代码,生成.class文件
  42. 将class文件打包成dex文件
  43. Android Studio 3.4之后,默认开启 R8(最早是dx,后续有D8,R8)
  44. 生成APK文件
  45. 而在AGP3.6.0之后,使用zipflinger作为默认打包工具来构建APK,以提高构建速度。(之前是apkbuilder)
  46. zipalign(对齐处理)
  47.  zipalign 对 apk 中的未压缩资源(图片、视频等)进行对齐操作,让资源按照 4 字节的边界进行对齐。这种思想同 Java 对象内存布局中的对齐空间非常类似,主要是为了加快资源的访问速度。
  48. APK签名(涉及不同版本的签名)

算法题:实现二叉树的层序遍历,用的队列

问的东西都比较结合实际开发,感觉如果只是看过一些文章,没实际上手,有一些细节很难回答

#24届软开秋招面试经验大赏##你收到了团子的OC了吗##美团面经##Android面经##客户端面经#
全部评论

相关推荐

04-04 21:01
已编辑
门头沟学院 前端工程师
楼主前端岗,目前在找暑期实习,求佬们帮忙选择一下,给个建议1. 快手,base北京,效率工程部,负责内部协同文档,ai接入等等,应该是企业内部自用的系统,hr说保证秋招前有转正答辩机会,会评估个人产出和实习时长,对快手有滤镜,福利很好,听人说这个组不卷而且大老板人很好2. 美团,base 上海,点评事业部,负责搜索与美食展示,用的是内部自研语言,面试时说是大前端,纯前端的内容比较少,大部分情况下是自研语言开发移动端,少量客户端,楼主一点客户端也不会,但是转正概率高,面试官说只要愿意留表现不是太差的都会转正。但是因为用内部语言,想着实习方向上不垂直,感觉技术上帮助不大,另外点评事业部有的说好有的说快跑,不太知道详情3. 字节,base 北京,负责广告业务里的风控,安全等,hr面说因为没到hc盘点的时候,所以不保证有hc,但大概有,而且要看个人产出和表现,听说字节转正率不太高,一堆实习一两年的同学在等转正机会,楼主卷不过她们,而且听说很压力,另外因为没走官网,也不确定是不是暑期实习,但是宇宙厂title很大。听学长说广告业务很好,但是风控不太行,有没有佬懂的【求佬们给个意见,能从转正,发展前景上,以及转正offer选择 技术岗 求助offer选择 找实习 # offer
投递快手等公司8个岗位
点赞 评论 收藏
分享
评论
3
7
分享

创作者周榜

更多
牛客网
牛客企业服务