V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
fyl00
V2EX  ›  iDev

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

  •  
  •   fyl00 · 2017-06-22 20:06:57 +08:00 · 3508 次点击
    这是一个创建于 2491 天前的主题,其中的信息可能已经有所发展或是发生改变。
    面试官问我数据解析怎么做,当时有点懵。不清楚他想问什么。

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


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

    其实说实话,感觉面试官提这个问题本身就水平一般,这是一个很局促很片面既不好扩展广度又不好扩展深度的问题。
    firefox12
        7
    firefox12  
       2017-06-23 16:33:37 +08:00
    最原始的问题, 你如何知道 一个 http 的结果已经完全发给你了,然后你再来解析负载。解析 json 的话,你能够写一个 json 的解析器,判断 json 格式的对错, 我想他会很满意。这些问题都是有无限扩展的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5344 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 985ms · UTC 07:25 · PVG 15:25 · LAX 00:25 · JFK 03:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.