V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
viator42
V2EX  ›  Android

看 android 招聘几乎每一个都要求熟悉 socket 编程,实际上这个用的有这么多么?

  •  
  •   viator42 · 2016-11-06 22:10:51 +08:00 · 15059 次点击
    这是一个创建于 2973 天前的主题,其中的信息可能已经有所发展或是发生改变。
    个人认为做 App 网络访问感觉还是 http 方便,自己做的项目也是用的 http 。感觉这应该是 HR 不懂从别的地方抄来的
    22 条回复    2016-11-14 22:17:25 +08:00
    tscat
        1
    tscat  
       2016-11-06 22:24:10 +08:00
    我也觉得 http 方便。。
    但是和业务相关吧,有的业务,比如聊天,还是 socket 这样的比较好。
    如果只是开发 xx 商场,那基本上还是 http 好用的
    bookit
        2
    bookit  
       2016-11-06 22:24:55 +08:00
    我精通 socket 编程,各种情况都处理过

    为 socket 层增加过异步机制,为系统增加 ssl 功能

    但,实际上多数人用不到这个
    neoblackcap
        3
    neoblackcap  
       2016-11-06 22:27:21 +08:00
    看情况,如果跟通讯相关,实时性要求高的可能会用到,比如直播,聊天之类的。你总不可能每隔一段时间就去轮询服务器吧?
    tomczhen
        4
    tomczhen  
       2016-11-06 22:33:05 +08:00
    个人觉得,如果楼主真的很了解 http 协议的话就不会发这种问题了。:doge:
    viator42
        5
    viator42  
    OP
       2016-11-06 22:39:49 +08:00
    @neoblackcap IM ,音视频流这些肯定是需要 socket 的。只是获取数据就没必要了吧
    snnn
        6
    snnn  
       2016-11-06 22:43:00 +08:00
    做游戏的要用。
    huihui123
        7
    huihui123  
       2016-11-06 22:44:08 +08:00 via iPhone
    可能工作中用不到,理解下还是应该的,比如一些网络编程上的思路。
    kozora
        8
    kozora  
       2016-11-06 22:48:06 +08:00
    IM 业务
    miketeam
        9
    miketeam  
       2016-11-06 22:49:51 +08:00 via iPhone   ❤️ 2
    很少用到。平时都有备份 socket 代码的,需要用的时候 copy 。另外 fb 开源了一个 socket 框架。蛮好的。其实我也不明白为什么要写哪些东西。 socket 使用的地方就是你觉得需要轮询的地方!前端(说 app 开发属于前端过分吗?)面试感觉应该致力于了解动画实现,流畅性,测试能力,数据库,调用硬件相关的功能,处理文档,缓存,图形图像, 2 维码,直播,加密解密,视频解码,解析 json , xml , html ,页面排版,富文本相关,线程, iOS 里面有 runtime 和 runloop ,安卓不知道是什么,然后合作开发相关的就是文档编写, git 使用,那么更高级的应该考察混编的能力,就是混合 c , c++,周边相关的可以考察 python ,对于其他的比如分享好友圈啊,支付啊那只不过是加个三方库而已,没什么说的。
    raysonx
        10
    raysonx  
       2016-11-07 09:46:05 +08:00 via Android
    这不是基础吗?换我面试我也会问。
    kaedea
        11
    kaedea  
       2016-11-07 10:09:11 +08:00
    这个又不是很深的东西,网络编程是计算机基础…
    kaichen
        12
    kaichen  
       2016-11-07 10:33:18 +08:00
    其实金融类的行情更新,做拍卖或者秒杀的场景也需要用到。
    zhouquanbest
        13
    zhouquanbest  
       2016-11-07 10:49:20 +08:00
    招聘贴也是有模板的
    实际上也就是要你有个基础 毕竟写过 Socket 和没写过还是有很大差别 遇到特定场景也能救个火
    我记得大学时计算机网络的课设就是用 socket+gtk 写个 Linux 上的类 QQ im demo ,造出来后还是觉得受益匪浅的,即使现在写 Android 基本直接用 OkHttp ,遇到些坑有以前那点经验也蛮方便解决
    vjnjc
        14
    vjnjc  
       2016-11-07 11:26:32 +08:00
    同意楼上,招聘的 HR 写要求的时候都是拷贝粘贴的!!所以大部分 JD 看不出什么。
    lishunan246
        15
    lishunan246  
       2016-11-07 11:28:00 +08:00 via Android
    网游基本上都得用 socket
    zcljy
        16
    zcljy  
       2016-11-07 14:06:48 +08:00
    内网通信 http 显然不行啊。还得是大 socket
    timestamp
        17
    timestamp  
       2016-11-07 14:49:53 +08:00
    有的招聘信息感觉不是负责人编的,反正我们以前公司是这样
    sampeng
        18
    sampeng  
       2016-11-07 17:05:46 +08:00
    1.hr 是 copy 的。但是 copy 的招聘主管的需求。
    2.如果我面试,虽然不用 socket ,但是要答不上来,直接就 pass 了。。就像你会做微积分,但是加减做不好一样的道理。。。。
    LancerXin
        19
    LancerXin  
       2016-11-07 19:49:59 +08:00
    别的公司不知道,反正我们公司是需要的,因为的确用到了。
    ibigbug
        20
    ibigbug  
       2016-11-14 02:58:54 +08:00
    > App 网络访问感觉还是 http 方便

    你说方便,你觉得 HR 不懂,你懂。那么如果问你知道 HTTP 的 keep alive 怎么实现,你怎么回答?

    你说说 HTTP 和 「 socket 」 的区别是啥?
    viator42
        21
    viator42  
    OP
       2016-11-14 09:13:59 +08:00 via Android
    @ibigbug 不停地发心跳包或者长链接
    HTTP 和 socket 都是基于 TCP 的连接。 HTTP 连接传输的是超文本,一方作为客户端另一方作为服务端实现单向的请求响应。 socket 传输的是字节流,传输的双方都可以作为服务端和客户端实现双工通信。
    答完了
    ibigbug
        22
    ibigbug  
       2016-11-14 22:17:25 +08:00
    @viator42 第一句答错啦, HTTP 的 keepalive 没有心跳,只是一次 req-res 结束之后不去 socket.close()

    至于你说 socket 是基于 TCP ,那我 UDP 算啥? HTTP 传输的是超文本,那我上传图片是超文本么? 什么是超?

    TCP 不能一方作为客户端一方作为服务端?

    你认为通过网络传输的除了字节流还有什么其他东西么?

    HTTP 2 也能双工哦~

    你好像一句都没说对~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2761 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 12:47 · PVG 20:47 · LAX 04:47 · JFK 07:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.