京东

作者: 紫色冰雨 | 来源:发表于2018-05-21 22:12 被阅读8次

    链接:https://www.nowcoder.com/discuss/11392?type=2&order=0&pos=13&page=1

    来源:牛客网

    本人是做 iOS 移动客户端方向,已经拿到 爱奇艺 的转正 offer。这几天上海的京东校招也去面了一下,共享一下面试题目:

    一面

    (自我介绍、实习经历略)谈谈你对 Objective-C 的动态绑定理解?

    个人回答方向是从 runtime 机制切入,对所有的 Object、Class 都进行对象化封装,对 clang 对 objc 的结构体改写转换来分析这个问题的。然后引入了 isa 指针和 swizzling method 等相关知识。(故意挖坑,因为自己在这方面比较擅长)

    异步网络图片加载的设计思路。

    根据 sdwebimage 三方库的源码对其进行分析。尤其是 Category 对于 url 的关联对象、operation 的 hash 表管理、download 方法的cache、disk查询方式这三个地方。(面试官是很满意的)

    异步网络接口的缓存机制。

    这个LZ曾经没有接触过,我只是用白纸画了一个流程图。用更新个人信息的功能为例,切记加入时间戳、考虑有无网络环境、引入 sync 同步性问题即可。

    谈谈面向对象的含义

    这个问题听到以后出乎意料。我理解成面试官在考察基础知识,便通过面向对象的三大特点来展开描述,并且用 objc和cpp进行解释。并且与面向过程进行对比。(吹水题,不要冷场就好。)

    至此一面结束。比较顺利,面试官也比较满意。第二天晚 11 点收到了 21 号的复试通知。

    二面

    二面的面试官是一个光头,看看有没有同一个面的童鞋。

    (没有做自我介绍,直接开问)ARC是什么?objc是如何记录引用计数的。GC机制有无了解。

    只要从 isa 的ex_retain 位记录 引用计数加1,并且当引用计数不够时会使用sidetable进行额外记录即可。GC我猜想是考知识面,因为macOS在之前开发中都是使用垃圾回收,而现在苹果放弃了GC在所有开发上的运用,都换做ARC内存管理方式。

    (面试官赞赏底层看的比较细,转问算法。由于我有acm经历,可能问题较难)第一题是给定Tag,在一个View中查询所有Tag为给定的View。

    抽象成多叉树的深度优先搜索来做

    给定一个 UIView 树,保证每一个结点View的Tag都不相同,让查询从rootView到指定Tag的View树上路径。

    抽象成对于多叉树的广度优先搜索,利用队列来记录情况即可。

    给定一个 UIView 树上的两个结点,搜索最近的父亲结点 View。

    可以转换成 LCA 最近公共祖先问题,利用 Tarjan 的离线lca算法。

    前两道题直接白纸上写的,最后一道题讲明了思路 dfs + rmq 问题即可做到。面试官很满意。全程面试 38 分钟,他还开玩笑说时间过了就跳过你的提问环节了。。。(好尴尬)

    走的时候面试官说最早明天晚上会有hr通知,等消息吧。(虽然到现在仍然是复试中,但是希望运气好转~)

    相关文章

      网友评论

          本文标题:京东

          本文链接:https://www.haomeiwen.com/subject/gtccjftx.html