mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-25 12:27:15 +00:00
60 lines
3.5 KiB
Markdown
60 lines
3.5 KiB
Markdown
# 面试学问
|
||
|
||
1. 技术面试问你遇到的难题是什么,如何解决的?
|
||
在考察你的技术边界
|
||
|
||
2. 至今遇到过的比较麻烦的技术问题?
|
||
|
||
- 在App首次安装启动的时候,商品列表快速滑动到底部,再向上慢慢滑动,看到商品view上面的文字和价格都显示正确,但是图片显示是有问题的。想到的是由于SDWebImageView图片问题导致的,因为再快速滑动的时候,图片开启了下载任务,但是异步下载的,cell也在复用池了,所以当你停止滑动看到商品view的时候正是之前的其他的图片任务下载结束,这样子再去响应给view设置图片就会造成当前的显示的图片并不是当前model对应的图片。知道问题的原因那么事情就好解决啦。思路就是如何区分当前下载好的cell是不是当前正在现实的cell。所以思路有2个。
|
||
- 自定义的 cell 里面可以拿到 model.imageUrl,那么当下载图片完成的时候可以在 block 里面去判断回调完成里面的 url 和 model.imageUrl 是否一致,一致的话就设置图片,否则不设置
|
||
- 在 cellForRow 里面去通过 indexPathForCell: 这个 api 拿到 indexPath,然后根据拿到的复用的 indexPath.row 再和当前现实的 indexPath.row 做比较,如果一致则设置图片,不一致则不设置图片
|
||
|
||
|
||
|
||
|
||
|
||
- 代码在编译的时候一直报出问题:某个pod的某个头文件file not found。最后排查问题发现工程中存在2个同名的 Framework,一个版本新、一个版本旧。主工程中链接到旧工程中了,所以一直找不到文件。
|
||
|
||
|
||
## 网络篇
|
||
|
||
- [App网络优化](https://blog.cnbang.net/tech/3531/)
|
||
- [IP 直连](https://www.jianshu.com/p/63a94cb46cd20。SNI:Server Name Indication。一个服务器的 IP 可能对应多个域名,也就说可能有多个 HTTPS 证书,如果在请求的时候不指定具体哪个的证书,服务器可能会返回错误的证书
|
||
- 多路复用
|
||
|
||
|
||
## 系统优化
|
||
|
||
- [移动端监控体系](https://www.jianshu.com/p/8123fc17fe0e)
|
||
- [启动时间优化](http://yulingtianxia.com/blog/2016/10/30/Optimizing-App-Startup-Time/)
|
||
|
||
稳定性、常见的稳定排查、crash率,监控、提升工程效率的工具(性能,效率,安全,成本,体验)、电量优化、看大图体验
|
||
|
||
|
||
## 思考
|
||
|
||
组件:重用、解耦。模块:封装、隔离。
|
||
|
||
架构中,模块复用的第一要求便是代码的功能组件化。组件化意味着拥有独立功能的代码从系统中进行抽象并剥离,再以“插件”的形式插回原有系统中。这样剥离出来的功能组件,便可以供其他APP使用,从而降低系统中模块与模块之间的耦合性;也同时提高了APP之间代码的复用性
|
||
|
||
|
||
借助于 Redux 的方式,将 MVC 更改为 MVCS(s为store)。MVC 中的 view 做到无状态,完全依赖于 Store 中返回的各种状态信息。
|
||
|
||
组件化之后分为技术组件、公用业务组件、每个业务线都是单独组件。通过把不同功能的组件代码拆分到不同的 pod 里,实现了业务线仅依赖于公共就可以迭代开发。改善了功能开发和协同版本。
|
||
|
||
流量过大,和服务器交互过多,采用 protoBuf 作为数据载体,有效减小流量消耗。
|
||
|
||
热修复:JavascriptCore + Aspects
|
||
|
||
|
||
|
||
组件化、模块化、热修复、RN 兜底后架构模式:
|
||

|
||
|
||
|
||
|
||
- Runtime
|
||
- 网络
|
||
- Hybrid
|
||
- RN、Weex
|
||
- JavascoriptCore 如何传递 Block |