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
wezzard
V2EX  ›  iDev

今天在微博上看到的一套面試題目,做了做,大家來拍磚唄。

  •  
  •   wezzard · 2015-07-06 04:09:56 +08:00 · 4392 次点击
    这是一个创建于 3458 天前的主题,其中的信息可能已经有所发展或是发生改变。
    問題集來源於微博上的 Sunny



    答案太長了,爲了節省大家翻頁的時間,我寫在簡書上了。

    http://www.jianshu.com/p/e771981b68cf
    18 条回复    2015-07-30 13:39:42 +08:00
    Elethom
        1
    Elethom  
       2015-07-06 04:31:56 +08:00
    好多錯誤。
    wezzard
        2
    wezzard  
    OP
       2015-07-06 04:36:05 +08:00 via iPhone
    @Elethom 求拍磚
    wezzard
        3
    wezzard  
    OP
       2015-07-06 05:13:41 +08:00
    又改了改,有幾道題目審題審錯了,睡了~
    cbf188
        4
    cbf188  
       2015-07-06 10:54:03 +08:00 via iPhone
    先马克
    wezzard
        5
    wezzard  
    OP
       2015-07-06 11:32:39 +08:00
    又改了改,怎麼沒人來說具體有甚麼地方出錯呢?需要開一個 git repository 麼?
    Elethom
        6
    Elethom  
       2015-07-06 12:50:20 +08:00
    @wezzard
    因為懶。
    wezzard
        7
    wezzard  
    OP
       2015-07-06 12:57:34 +08:00
    @Elethom 呵呵
    Vienta
        8
    Vienta  
       2015-07-06 15:42:49 +08:00   ❤️ 1
    出这些题目的人应该是自己研究过这类问题了的。很多面试官都喜欢问自己研究过的东西,而这些东西可能别人是没有深入进行研究的。所以面试官的有些问题太片面了,你今天研究个@property就说它能反映一个人水平,明天是不是研究个重新签名就说知道重新签名的就水平高了呢?都是不一定的,所以一般情况我的原则会问面试者他们擅长哪些,从他们擅长的里面去交流。
    property
        9
    property  
       2015-07-06 22:03:59 +08:00
    @Vienta 怪我叻
    Vienta
        10
    Vienta  
       2015-07-07 07:03:51 +08:00
    @property 哈哈哈 没考虑到有这个id
    celiali
        11
    celiali  
       2015-07-07 13:02:44 +08:00
    我水平有限,觉得楼主大部分都答得挺好的,这套题里面很多都是effective objective-c 里的内容。

    错了一点儿关于runtime机制的东西,可以参考这个系列: http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime(1)%5Bnil%5D-self-and-super/

    调试EXC_BAD_ACCESS我会回答应该使用NSZombieEnabled去调试。

    由于手边没有reference我就不细写了,谢谢楼主,这才发现自己完全不会用copy :)
    celiali
        12
    celiali  
       2015-07-07 13:16:17 +08:00
    实例对象的isa指针指向所属class,class的isa指针指向metaclass,metaclass的isa指针指向root metaclass,root metaclass的isa指针指向自己。
    别的没有什么要补充的了。
    wezzard
        13
    wezzard  
    OP
       2015-07-07 14:36:24 +08:00
    @Vienta 我倒是覺得這些題目反映的東西都是一類的「你懂多少 C?」,Objective-C 運行時這些特性其實說白了就是優雅包裝的 C 實現而已(可能也有 C++,但是我 C++ 真是渣,就不妄加評論了)。

    @celiali 輸出 `[self class]`, `[super class]` 那道題目因爲我寫的時間太晚,太疲勞,搞反了……檢查了這麼多遍居然還沒檢查出來,真是慚愧
    其實同理,`[super performSelector: performSelector:NSSelectorFromString(@"aSelectorName")];` 永遠執行的是 `self` 的 `-aSelectorName`。

    比如下面這個程序就是永遠輸出「Upper: Oink began」

    ````
    #import <Foundation/Foundation.h>

    @interface Base : NSObject

    - (void)oink;

    @end

    @implementation Base

    - (void)oink {
    NSLog(@"Base: Oink began");
    NSLog(@"Base: Oink ended");
    }

    @end

    @interface Upper : Base

    @end

    @implementation Upper

    - (void)oink {
    NSLog(@"Upper: Oink began");
    [super performSelector:NSSelectorFromString(@"oink")];
    NSLog(@"Upper: Oink ended");
    }

    @end

    int main(int argc, const char * argv[]) {
    @autoreleasepool {
    Upper * anUpper = [[Upper alloc] init];
    [anUpper oink];

    // insert code here...
    NSLog(@"Hello, World!");
    }
    return 0;
    }
    ````
    wezzard
        14
    wezzard  
    OP
       2015-07-07 14:36:49 +08:00
    居然不支持 markdown 回覆……醉了
    tane05
        15
    tane05  
       2015-07-08 21:20:24 +08:00
    @celiali 冒昧的问下,方便留个邮箱联系么?
    110293734
        16
    110293734  
       2015-07-10 16:27:26 +08:00
    有好几个问题,答案不敢苟同。
    也有几个问题答不上来,有点偏。

    不过大部分都能回答出来。
    文中大多数的东西偏重于runtime + runloop这块。其实现实中,你要extern IOS自带东西的情况不会太多,多线程这块也不会需要太多。

    事实上,懂CA+CG+CT,多用一些辅助软件quartz paintcode 等会更有实际效果。面试的问题,太偏重 原理了,不够全面
    cvv
        17
    cvv  
       2015-07-17 10:10:27 +08:00
    偏学院的感觉,教书不错,面试题的话太脱离实际,画质很美性能太烂,打回去重练 ;P
    zenghaojim33
        18
    zenghaojim33  
       2015-07-30 13:39:42 +08:00
    链接打不开
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   844 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:02 · PVG 05:02 · LAX 13:02 · JFK 16:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.