新人问一句,面试官问网络请求的数据解析主要是想问什么?

2017-06-22 20:06:57 +08:00
 fyl00
面试官问我数据解析怎么做,当时有点懵。不清楚他想问什么。

因为之前用 Python 写简单的爬虫的时候,觉得这个东西就是一步步解析就是了,没什么复杂的情况。
之前也在 iOS 里解析过 JSON,不用第三方库的话,就是序列化和反序列化的问题,只是经常要判断,比较麻烦。


所以求 iOS 网络请求的相关知识点。
3512 次点击
所在节点    iDev
7 条回复
tlday
2017-06-22 21:34:00 +08:00
可能是想问 AFNetworking ?异步编程? Reactive ?
tlday
2017-06-22 21:36:25 +08:00
或者解析 XML ? DOM 解析和 SAX 解析? DTD 校验什么的?我觉得你应该当时就问清楚他问问题的意图 ,不该自己回家瞎猜。
xiaoshenke
2017-06-22 21:49:02 +08:00
序列化反序列化而已。难道是让你造一个 gson 出来(逃)?
fyl00
2017-06-22 22:30:57 +08:00
@tlday 面完之后才反应过来我应该问清楚的,下次吸取教训了。
chipmuck
2017-06-23 10:49:59 +08:00
可能就想问,你用什么库解析? :D (哈哈哈哈
flyingghost
2017-06-23 12:31:36 +08:00
只问数据解析,说明对你的定位不是系统架构师,充其量是个客户端开发或者架构。从客户端角度回答的尽可能视角宏观条理清晰并在他感兴趣的点能展开一些细节,就很好了。给个参考:
数据解析这一块主要考虑几个问题:
1,最关键的就是数据传输协议。协议定义是根据场景、需求等多方面因素而选择的。常见的有 json、xml 等文本格式,也有 Thrift、protobuf 等二进制格式,比较少见的场景也有 java 序列化、php 序列化等语言绑定的格式。也可以自定义格式。
2,应用层协议。这个和业务逻辑相关,主要是注意数据版本、数据结构、字段类型等。
3,传输容错机制。可能需要重传机制、确认机制、容错机制等。一般应用用不到。
4,解析器输入,一般是整体输入(比如 json ),有可能需要做到流式输入(比如自定义协议),
5,输出同理,有些业务场景可能需要流式输出或者分段输出。根据业务场景决定。

其实说实话,感觉面试官提这个问题本身就水平一般,这是一个很局促很片面既不好扩展广度又不好扩展深度的问题。
firefox12
2017-06-23 16:33:37 +08:00
最原始的问题, 你如何知道 一个 http 的结果已经完全发给你了,然后你再来解析负载。解析 json 的话,你能够写一个 json 的解析器,判断 json 格式的对错, 我想他会很满意。这些问题都是有无限扩展的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370408

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX