This topic created in 3246 days ago, the information mentioned may be changed or developed.
面试官问我数据解析怎么做,当时有点懵。不清楚他想问什么。
因为之前用 Python 写简单的爬虫的时候,觉得这个东西就是一步步解析就是了,没什么复杂的情况。
之前也在 iOS 里解析过 JSON,不用第三方库的话,就是序列化和反序列化的问题,只是经常要判断,比较麻烦。
所以求 iOS 网络请求的相关知识点。
7 replies • 2017-06-23 16:33:37 +08:00
 |
|
1
tlday Jun 22, 2017 via Android
可能是想问 AFNetworking ?异步编程? Reactive ?
|
 |
|
2
tlday Jun 22, 2017 via Android
或者解析 XML ? DOM 解析和 SAX 解析? DTD 校验什么的?我觉得你应该当时就问清楚他问问题的意图 ,不该自己回家瞎猜。
|
 |
|
3
xiaoshenke Jun 22, 2017
序列化反序列化而已。难道是让你造一个 gson 出来(逃)?
|
 |
|
4
fyl00 Jun 22, 2017 via iPad
@ tlday 面完之后才反应过来我应该问清楚的,下次吸取教训了。
|
 |
|
5
chipmuck Jun 23, 2017
可能就想问,你用什么库解析? :D (哈哈哈哈
|
 |
|
6
flyingghost Jun 23, 2017 1
只问数据解析,说明对你的定位不是系统架构师,充其量是个客户端开发或者架构。从客户端角度回答的尽可能视角宏观条理清晰并在他感兴趣的点能展开一些细节,就很好了。给个参考: 数据解析这一块主要考虑几个问题: 1,最关键的就是数据传输协议。协议定义是根据场景、需求等多方面因素而选择的。常见的有 json、xml 等文本格式,也有 Thrift、protobuf 等二进制格式,比较少见的场景也有 java 序列化、php 序列化等语言绑定的格式。也可以自定义格式。 2,应用层协议。这个和业务逻辑相关,主要是注意数据版本、数据结构、字段类型等。 3,传输容错机制。可能需要重传机制、确认机制、容错机制等。一般应用用不到。 4,解析器输入,一般是整体输入(比如 json ),有可能需要做到流式输入(比如自定义协议), 5,输出同理,有些业务场景可能需要流式输出或者分段输出。根据业务场景决定。
其实说实话,感觉面试官提这个问题本身就水平一般,这是一个很局促很片面既不好扩展广度又不好扩展深度的问题。
|
 |
|
7
firefox12 Jun 23, 2017
最原始的问题, 你如何知道 一个 http 的结果已经完全发给你了,然后你再来解析负载。解析 json 的话,你能够写一个 json 的解析器,判断 json 格式的对错, 我想他会很满意。这些问题都是有无限扩展的。
|