上出了一套很基的 Objective-C 面,被吐槽有面者了,有趣的做做吧~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Elethom
V2EX    C

上出了一套很基的 Objective-C 面,被吐槽有面者了,有趣的做做吧~

  •  
  •   Elethom 2016-07-01 12:56:33 +08:00 6320 次点击
    这是一个创建于 3391 天前的主题,其中的信息可能已经有所发展或是发生改变。

    便打告,敝司 iOS 研工程位有一位置,要求和 隔壁 topic 差不多,只是薪倍而且可程。


    感的已都是基得不能再基的了,只有了考察面者的搜索和能力稍有些偏。因目改用 Swift 用不上些了所以便出 V2EX 社的各位考下意。目主要考察以下:

    • 格式的性
    • 方式是否雅
    • 和之外的能力
    • 解的

    下面是面:

    Language

    1. Declare an NS_OPTIONS type BCLayoutAxis with following values:

    • none
    • horizontal
    • vertical
    • all

    2. Create string representations for the values above

    For debugging, we need string representations ("none", "horizontal", "vertical", "all") instead of original integer values. Use a graceful approach to represent them.

    3. Declare a constant value (public/private)

    Declare a constant named kBCMyConstant of NSString type with value of myConstantValue, public and private.

    4. Create variadic method

    5. Create a singleton

    6. Concatenate string literals

    7. Percentage encoding and decoding

    8. Reverse an array

    9. Filter objects in an array by value of a property

    @interface MyObject : NSObject @property (nonatomic, assign, readonly) BOOL favorited; @end 

    Given an NSArray instance containing several MyObject objects, put the objects of which favorited property are YES into a new NSArray instance.

    10. Remove duplicated objects from an array

    NSArray *myArray = @[@"a", @"b", @"c", @"a", @"d"]; 

    Create a new NSArray instance from myArray containing @"a", @"b", @"c", @"d" only.

    11. Determine if an NSDate instance is in this month

    Runtime

    1. Swizzle a method

    - (void)myMethod; - (void)bc_myMethod; 

    2. Determine the type of a property

    @property (nonatomic, copy) NSString *myProperty; 

    3. Determine the caller of a method

    Stack, framework, address, class, function, line.

    55 条回复    2016-07-20 23:45:55 +08:00
    karnaugh
        1
    karnaugh  
       2016-07-01 12:58:31 +08:00
    恩。。。然而看不懂英文啊。。。
    PrideChung
        2
    PrideChung  
       2016-07-01 13:23:06 +08:00
    第一题还真是懵逼了,平时都用 snippet 自动展开
    ichanne
        3
    ichanne  
       2016-07-01 13:27:46 +08:00 via iPhone
    手写真的有点难度,可以用 Xcode 就没那么难了
    a412739861
        4
    a412739861  
       2016-07-01 13:33:16 +08:00
    Xcode 里面现找呗……
    感觉如果是手写,全跪,如果是开着 Xcode 连着网,还是基本能做些的,就是有些其实根本不知道原有。
    a412739861
        5
    a412739861  
       2016-07-01 13:33:44 +08:00
    @a412739861 缘由……该死的输入法
    Elethom
        6
    Elethom  
    OP
       2016-07-01 13:34:18 +08:00 via iPhone
    @PrideChung
    @ichanne
    @a412739861
    就是用 Xcode 的,可以用 Google 用 Stack Overflow 。
    Elethom
        7
    Elethom  
    OP
       2016-07-01 13:35:40 +08:00 via iPhone
    @PrideChung
    第一是考察不把 None 置零,不用 mask 。
    XDDD
        8
    XDDD  
       2016-07-01 13:41:22 +08:00
    @Elethom NSOption 的话根本没有 none 和 all 吧, none 用 0 , all 用 horizontal | vertical
    a412739861
        9
    a412739861  
       2016-07-01 13:42:36 +08:00   1
    那 1 的话, UIView 的 autosizingMask 就有吧。
    2 的话, Masonry 有吧, NSLayoutConstraint+MASDebugAdditions.h

    10.也有现成的[array valueForKeyPath:@"@unionOfArrays.self"],么不是
    Runtime 虽然不理解,但是 swizzle 可以照着 AFNetworking 抄吧

    感觉大部分还行吧,开源库里有挺多用到了的,当然我不一定都能写出来,比如最后一个……
    sensui7
        10
    sensui7  
       2016-07-01 13:45:22 +08:00
    @Elethom 可以用 google , 那我这个不会 oc 的都可以答出大部分,我估计的。。。这个还是很人性化的。
    a412739861
        11
    a412739861  
       2016-07-01 13:45:39 +08:00
    @a412739861
    10 的 order 要稍微加一点,这个只是删除重复,之前做到过。
    all 我觉得是可以用 horizontal | vertical 的,不过 NSOption 里面不能这么写的吧。
    loveuqian
        12
    loveuqian  
       2016-07-01 13:57:38 +08:00   1
    好难。。。
    我们还是来聊聊 UI 吧
    iyeatse
        13
    iyeatse  
       2016-07-01 14:07:59 +08:00
    除了 framework 需要 google 以外其它都可以手写,这样的大概是个什么价位= =?
    kera0a
        14
    kera0a  
       2016-07-01 14:17:16 +08:00
    不难吧,
    一个正常的开发,应该在 XCODE 里答对上面所有题 - -。
    blackfire
        15
    blackfire  
       2016-07-01 14:19:22 +08:00 via iPhone
    没感觉有多为难………遇到这样的面试题我直接就转身走
    blackfire
        16
    blackfire  
       2016-07-01 14:22:17 +08:00 via iPhone
    @blackfire 补充说明……我的天,这个公司英语文化太浓,搞不来
    jeremaihloo
        17
    jeremaihloo  
       2016-07-01 14:32:13 +08:00
    其实英语还好,就是繁体字为难我了,根本看不懂
    oorrpp
        18
    oorrpp  
       2016-07-01 14:46:40 +08:00
    @Elethom 搞毛,还能联网,还嫌难,那还是回家种田吧
    kideny
        19
    kideny  
       2016-07-01 15:32:18 +08:00
    在台服 WOW 混了好多年的表示,繁体字什么的很简单。。。。比英语简单多了。
    Elethom
        20
    Elethom  
    OP
       2016-07-01 15:36:58 +08:00
    @XDDD

    考答案是:

    typedef NS_OPTIONS(NSUInteger, BCLayoutAxis) {
    BLayoutAxisNOne= 0,
    BCLayoutAxisHorizOntal= 1 << 0,
    BCLayoutAxisVertical = 1 << 1,
    BCLayoutAxisAll = (BCLayoutAxisHorizontal | BCLayoutAxisVertical),
    };
    Elethom
        21
    Elethom  
    OP
       2016-07-01 16:33:37 +08:00   2
    @a412739861

    首先,每都可以拓展呀。比如一 variadic method ,分怎理有 nil termination 和有 nil termination 的情呢?或者 reverse 排序,不用 reverse object enumerator 呢?是只手排序? Filter array 不用 NSPredicate 呢?不用 KVC collection operators 呢?是只手 filter ?

    其次,面也看你是否熟使用工具。是否 Xcode 一自定 snippet 都有、配色都用的默呢?不用 Alfred 呢?打 Alfred 後不自切到英文入法呢? Alfred 有有自定的 Stack Overflow 搜索指令呢?
    Elethom
        22
    Elethom  
    OP
       2016-07-01 16:47:37 +08:00
    @loveuqian
    好呀,聊聊:
    * 有哪些要素影平衡?它的先是?
    * 有哪些可以用於情感的手段?
    * 你 affordance 的, Norman 引入界的 affordance 概念和 Gibson 提出的有哪些同?
    * 在中利用 distributed cognition 降低知成本有哪些要?怎合起使用?
    * 用一 app 例,它在 accessibility 上有哪些可改的空?
    * RTL 的 UI ,要做哪些特的理?有哪些地方不做特的理?
    * 做 user research 的手段有哪些?各有什缺?
    * 做用查卷提的技巧有哪些?有哪些要避免的提方式?
    * 摸式屏幕上的交互有哪些天生的缺陷?分怎弱它的影?
    chmlai
        23
    chmlai  
       2016-07-01 16:50:09 +08:00
    taijiandanle
    loveuqian
        24
    loveuqian  
       2016-07-01 17:10:59 +08:00
    @Elethom
    这个。。。抱歉抱歉。。。
    可能误会了,我说的是 UIKit 。。。。
    你说的这些我又更加不懂。。。。
    kidneyband
        25
    kidneyband  
       2016-07-01 17:11:27 +08:00
    @Elethom 有点咄咄逼人了。
    Beginner
        26
    Beginner  
       2016-07-01 17:15:00 +08:00
    @kideny 寒冰皇冠好像是这个服务器 LM
    Troevil
        27
    Troevil  
       2016-07-01 17:17:03 +08:00
    能联网 我也能做 , 哈哈 , 虽然不做 iOS
    muziki
        28
    muziki  
       2016-07-01 17:28:22 +08:00
    看这个咄咄逼人的气势,港台来的?
    繁体字混着英文看着好不舒服,要不就全英文,要不就中文,又不是那些专业名词都没有中文释义。
    vincentxue
        29
    vincentxue  
       2016-07-01 17:42:42 +08:00
    确实很基础,让我来尝试回答一下。
    vincentxue
        30
    vincentxue  
       2016-07-01 18:04:27 +08:00   1



    第 4 题知道 API ,但很少写,给忘了。
    第 7 题没看明白题目

    Runtime 的就不写了。都是很常见的 API 。另外第 3 题我没看明白下面的注解是什么意思。

    没有用过搜索,用 CodeRunner 敲的。
    Elethom
        31
    Elethom  
    OP
       2016-07-01 18:50:27 +08:00
    se@vincentxue
    不。 6 是可以直接起成「 @"a" @"b"」的,如果性能比在意 format 也量少用。 7 是指: https://en.wikipedia.org/wiki/Percent-encoding
    有趣敝司看看?
    Elethom
        32
    Elethom  
    OP
       2016-07-01 18:50:39 +08:00
    @vincentxue
    不。 6 是可以直接起成「 @"a" @"b"」的,如果性能比在意 format 也量少用。 7 是指: https://en.wikipedia.org/wiki/Percent-encoding
    有趣敝司看看?
    PrideChung
        33
    PrideChung  
       2016-07-01 19:12:38 +08:00
    @Elethom 能用 Xcode 的话第一题就是送分啊,随便找个系统框架定义的 Options 拷过来改改就完了
    vincentxue
        34
    vincentxue  
       2016-07-01 20:03:45 +08:00
    @Elethom 噢你说的那种我一般分行拼接的时候才这么写。原来 7 是说 URL encoding ,受教了。

    另外我觉得第三题那种如果是对外的还是加上类名什么比较好,我一般只有在内部才会用 k 开头,外部都是类似于系统那样。估计你只是为了出题这样做吧。


    我还是想问问 Runtime Section 中的第 3 题下面的注解是什么意思?

    兴趣是有啊,然而我走不了。

    我之前在论坛看过你们公司的招聘贴,也看到你对英文水平的解释,这一个我是不符合的。虽然我公司是中美两地的,每天都要读写英文邮件,然而要做到 [速度能和母一致,可以流作保不出不符合 native speakers 的法;的,能不用字幕完整地看懂 WWDC 、做日常交流不生解] 我自认为还是有差距的,我还常常要查字典,有时候要用翻译器。其他的倒是都符合。

    其实我早就想找一个可以 Remote 的工作,不是我懒得去上班,而是患有 IBS 导致我时常腹部不适。然而我现在走不了,我公司所有的产品的 iOS 项目都是我一个人单挑,如果我走了,公司的运营会受很大的影响。而且招聘一个懂音视频流和底层处理的靠谱 iOS 比较难,就算招到了也没那么快上手,所以一时半会儿也走不了。

    你们还处于天使轮,即使 double 了隔壁的薪资,可能还是不太够我目前的收入。在你们团队中我的价值没有那么重要,不值我现在的价钱。我有一定的经济压力,所以对薪资还是有硬性的要求。

    很可惜就这么错失了一个 Remote 工作的面试机会。。。
    wezzard
        35
    wezzard  
       2016-07-01 20:07:05 +08:00
    那 public 和 private 不啊, C 言的概念是 extern 和 static ,具 pub 不 public 跟 .h 文件在建到 public header folder 是 project header folder 是 private header folder 有啊 (逃
    edward9941
        36
    edward9941  
       2016-07-01 20:39:11 +08:00
    第三题我认为如果 extern 的话一定要加前缀,在.m 中如果不 extern 一定要写上 static ,实际上是一个 C 的知识,我司出现很多次其他业务线有同名的造成编译失败。
    wezzard
        37
    wezzard  
       2016-07-01 20:44:01 +08:00
    @vincentxue

    Runtime section 下的也是基本的 API 用哦

    第一大街了,想不到年不 swizzle 的……

    第二: property_copyAttributeValue(property, "T") 然後解析得的字符串(返回值用完後要 free 掉是一陷阱

    第三:在方法 [NSThread +callStackSymbols] 就行了
    vincentxue
        38
    vincentxue  
       2016-07-01 22:06:08 +08:00 via iPhone
    green15
        39
    green15  
       2016-07-01 22:31:40 +08:00 via Android
    英语是个坑……
    wezzard
        40
    wezzard  
       2016-07-01 22:54:17 +08:00
    @vincentxue 哈哈,我看帖子看位了,上有一人不 runtime section 下的,我以是你的,就 @ 你然後了。
    runner
        41
    runner  
       2016-07-01 23:03:29 +08:00
    很 cool 的试题
    so898
        42
    so898  
       2016-07-01 23:22:37 +08:00
    看了一眼题目表示一题都不会,好慌
    然后看了一眼答案,原来都用过啊……看来看不懂的是英语……
    不过要是能用 xcode + stackoverflow 的话,解题应该不是啥问题

    那个 constant 看着很有感想……嗯,还是 Swift 好
    so898
        43
    so898  
       2016-07-01 23:27:08 +08:00
    说起来,考了单例而不考 Delegate 、 Block 、 Notification 啥的,也没有考线程相关的内容,感觉整套考题语法内容偏多啊
    没有 iOS 或者 Mac UIKit 相关有点测不出实战做 App 能力的感觉
    有点光测了基础不够实用的感觉
    大胆猜测一下,出题者应该是从 C/C++一步步转过来的,现在应该主要做 Frameworks 或者核心方法实现
    enjoeq
        44
    enjoeq  
       2016-07-02 00:30:00 +08:00
    不用 Google ,不用 Xcode ,我都能手动做出几道题,加上 Google 、 Xcode 和 StackOverflow 的话,我相信我能把全部都搞定,除了第 4 题看不懂题目之外,好吧,我是英语渣。
    jamescheng
        45
    jamescheng  
       2016-07-02 00:56:28 +08:00
    www.hackerrank.com 无聊的人可以去这个网站去做题...哈哈
    Elethom
        46
    Elethom  
    OP
       2016-07-02 02:42:23 +08:00 via iPhone
    @so898
    你猜了,是偶 UI 和 frameworks 代的。
    Elethom
        47
    Elethom  
    OP
       2016-07-02 02:43:34 +08:00 via iPhone
    @vincentxue 一年超 400k ,好害。 qwq
    jukka
        48
    jukka  
       2016-07-02 08:51:21 +08:00 via iPhone
    不用在意吐槽啦,这个是对你们自己负责,也是对面试者负责。 :)
    vincentxue
        49
    vincentxue  
       2016-07-02 10:24:11 +08:00 via iPhone
    @Elethom 不是厉害的原因,拿命换的。如果你们不加班,那算下来时薪也差不多了。我经常要工作到至少晚上 10 点,忙的时候凌晨过后。当然都不是公司强制的,活太多时间太少。这也是我稍微有点不爽的地方,虽然我很爱写代码,但是没有学习的时间了。我又没别的爱好。等经济压力小的时候我还是要考虑考虑换工作了。
    Elethom
        50
    Elethom  
    OP
       2016-07-02 12:30:47 +08:00 via iPhone
    @vincentxue
    不加班。除了有程的同事早晚要接送孩子工作不同以外,都是 10:00-10:30 上班, 19:30 下班,中午午休一小。除了上偶看守著基本上 19:30 下班,不到 20:00 公司就看不到人了。
    其你可以考一份不加班的工作再接外包,然工作短但安排能自由些。
    Elethom
        51
    Elethom  
    OP
       2016-07-02 12:31:30 +08:00 via iPhone
    不,午休是一半小。
    kepenj
        52
    kepenj  
       2016-07-02 15:37:50 +08:00
    第一反应打开了 Google 是什么鬼...看来板砖搬的有点久了(手动滑稽。。。
    Geoion
        53
    Geoion  
       2016-07-03 02:29:11 +08:00
    手不听使唤已经打开了 google
    vincentxue
        54
    vincentxue  
       2016-07-03 03:57:39 +08:00 via iPhone
    @Elethom

    我对外包实在是没兴趣,不喜欢不专业的人。很久很久以前接过一次外包,我就被恶心到了。可能是没遇到专业的,然而给我留下了不好的印象。而且拿着老板的薪水接外包貌似不太好,心里过不去。

    我前天买了 iMac 5k ,今天下午就应该到货了。已经考虑跟公司申请远程工作,我认为应该是可以允许的。如果不允许就先辞职但一时也走不了,公司慢慢招人,我也慢慢找一个,不过薪水肯定是要降低了。目前市场看样子最多 30k 左右就封顶了,我自认为没那个自信要这个数。
    nevercry
        55
    nevercry  
       2016-07-20 23:45:55 +08:00
    撸了个 Swift 版的,如果面试的时候给用 Xcode 再加 Google 这些题完全没有难度…… Runtime 就不写了……



    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5423 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 88ms UTC 07:44 PVG 15:44 LAX 00:44 JFK 03:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86