上週出了一套很基礎的 Objective-C 面試題,被吐槽說有點為難面試者了,有興趣的來做做吧~

2016-07-01 12:56:33 +08:00
 Elethom

順便打個廣告,敝司 iOS 研發工程師崗位還有一個位置,要求和 隔壁 topic 差不多,只是薪資雙倍而且可遠程。


感覺選的已經都是基礎得不能再基礎的題了,只有幾個為了考察面試者的搜索和學習能力稍有些偏。因為項目剛剛改用 Swift 用不上這些題了所以順便發出來給 V2EX 社區的各位參考下意見。題目主要考察以下幾點:

下面是面試題:

Language

1. Declare an NS_OPTIONS type BCLayoutAxis with following values:

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.

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

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

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

參考答案是:

typedef NS_OPTIONS(NSUInteger, BCLayoutAxis) {
BCLayoutAxisNone = 0,
BCLayoutAxisHorizontal = 1 << 0,
BCLayoutAxisVertical = 1 << 1,
BCLayoutAxisAll = (BCLayoutAxisHorizontal | BCLayoutAxisVertical),
};

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289580

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX