ChenYilong / ChenYilong/iOSInterviewQuestions

iTeaTime(技术清谈)【008期】【代号:超人】

Open
#124 2 comments 0 reactions 0 assignees View on GitHub
note
Dominant language
Swift
Stars
9.5k
Forks
2.8k
PR merge metrics
No merged PRs in 30d

Description

# [iTeaTime(技术清谈)]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/127)【008期】【代号:超人】

----------

![](http://ww4.sinaimg.cn/large/006tNc79ly1g4wvr2s23oj31sr0q242m.jpg)

----------

出题:微博@iOS程序犭袁
本期代号:超人

----------

![enter image description here](http://getwallpapers.com/wallpaper/full/e/7/d/1521642-download-free-dark-superman-wallpaper-1920x1200.jpg)

从未被讨论过的问题,不公布答案。顺延到下一期。只要讨论过,答案不正确也会提供答案。下面将讨论过的问题公布答案:

下列题目可能出现以下虚拟的程序员,非实指:
- 小地
- 大风哥

----------

1 【问题】【iOS】猜想系统 `isEqual` 函数的实现原理,并给出代码实现。要求能通过以下用例。

用例一:

```Objective-C
NSMutableString *s1 = [NSMutableString stringWithString: @"大风, 哥"];
NSMutableString *s2 = [NSMutableString stringWithFormat: @"%@, %@", @"大风", @"哥"];
BOOL equal = [s1 isEqual: s2]; // 要求返回YES

```

用例二:

```Objective-C
CYLCustomizeClass *customizeObject1 = ...;
CYLCustomizeClass *customizeObject2 = ...;
BOOL equal = [customizeObject1 isEqual: customizeObject2]; // 要求返回YES
```


【提示1】考虑父类、子类同时实现了该方法的情况。
【提示2】假设你的类结构包括以下元素,那么 `cache` 部分可以不用比较:

```Objective-C
NSString *_name;
NSMutableDictionary *_cache;
int _length;
char *_data;
```


【 难度🌟🌟🌟🌟】【出题人 微博@iOS程序犭袁】
【提示】和006期,suuny出的题有联系,也跟 NSString 底层实现有关。

----------

2 【iOS】请给出下列代码的输出结果,并给出分析。如果有多种可能性需求进行列举,不确定性也要说明。

```Objective-C
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.global().async {
print("print 1, thread: \(Thread.current.isMainThread)");
}

DispatchQueue.global().async {
print("print 2, thread: \(Thread.current.isMainThread)");
}
DispatchQueue.global().async {
print("print 3, thread: \(Thread.current.isMainThread)");
}
DispatchQueue.global().sync {
print("print 4, thread: \(Thread.current.isMainThread)");
}
}

```

【 难度🌟🌟🌟】【出题人 微博@iOS程序犭袁】
【提示】没看过源码,只看文档,基本答错,这是一道送命题。

----------

3【问题】【iOS】参考代码注释内容:

![](https://ws2.sinaimg.cn/large/006tNc79ly1g33164vyx2j30x0082762.jpg)


```Objective-C
int main(int argc, const char * argv[]) {
NSArray *array = @[@"Hello", @"World"];
//在这里插入代码(一行最好)
//在不创建新的数组的情况下将 array变成@[@"Goodbye", @"World"]
NSLog(@"%@", array);
return 0;
}
```


【 难度🌟🌟🌟🌟】【出题人 孙源Sunny@dd】

----------

4 【iOS】kengny 是一名产品经理,他平时有两大爱好:第一,到处在各类群里求买企业证书,第二,运营着一款小成本的视频 app,迫于成本压力,一般只会有两个人参演。他向大风哥提出需求,说希望能够在用户退到后台后,上传日志记录用户什么时候进入的后台,便于记录用户使用时长。并要求退到后台后依然能够下载小视频,这样用户上班点击下载按钮,回到家躺床上打开 APP 就能看了。并且要求把后台下载成功率定为大风哥的KPI。

如果你是大风哥,你将如何应对。必要时贴出示例代码。

【 难度🌟🌟🌟】【出题人 微博@iOS程序犭袁】

----------

5【iOS】kengny 是一名产品经理,他们的 app 是一款类似美团的产品,最近他和一些店家进行了PY交易,要求用户到他们家店附近的时候,立即收到通知。
小地和大风哥,会上听到需求后,小地立即说:这个需求做不了。大风哥会上没说话,产品经理说,明天上线,怎么实现我不管,散会。

会后,大风哥悄悄说对小地说要做也可以,可以这样做:_______。

请补充填空,要求给出详细理由,包括技术实现细节,如有必要贴出示例代码。

【 难度🌟】【出题人 微博@iOS程序犭袁】

----------

6【iOS】大风哥负责企业内部员工 APP 的iOS开发工作,产品经理 kengny 老师通知说,老板要求,发布2.0,对员工数据进行更新,在 iOS 原有数据库基础上,增加一个字段,用于记录用户 “是否是兄弟”。该字段只有老板有操作权限,如果打开APP后,发现不是兄弟,就弹出离职申请页面。服务端得知填写完成后,会发送指令要求手机原地爆炸。如果不能爆炸的话,远程删除APP,或将手机初始化也可以。

如果你是大风哥你将如何应对。要求数据库操作贴出示例代码,数据库类型不限。

【 难度🌟🌟🌟】【出题人 微博@iOS程序犭袁】

----------

7【算法】请通过编程实现大数(亿位)的相加减乘除。(不限语言)
【 难度🌟🌟🌟】【出题人 消摇-金融-深圳iOSqp】
【提示】用人算的思路让电脑去算。
弱弱的问句第6题是用NSDecimalNumber去做计算吗"

M.W-不知名小作坊-iOS-北京:@颜魏-大世纪-深圳iOS 应该不是,用字符串和数组可以实现大数的加减
颜魏-大世纪-深圳iOS:弱弱的问句第6题是用NSDecimalNumber去做计算吗

----------

8 【iOS】CoreData中几个核心概念及关系阐述下,第三方库 MagicRecord 的读写操作是在什么线程中执行的?【 难度🌟🌟🌟】【出题人 微博@iOS程序犭袁】

----------

9 【iOS】在一个字典中含有,字符串,字典,数组。层层嵌套,可能十几层。现在想知道任意节点Value中是否含有某个字符串。【 难度🌟🌟】【出题人 BM-成都iOS】
【提示】与广度优先排序,深度优先 排序。

----------

10 【iOS】多线程操作中,读写操作一定要在同一线程中执行吗?给出原因,并至少给出两种场景佐证你的观点,以及实现方法。【难度🌟🌟】【出题人 微博@iOS程序犭袁】

----------

11 【iOS】一个app中可能会产生几个 Autorelease Pool , Autorelease Pool 中的临时对象,何时会被dealloc 。给出原因。【难度🌟🌟】【出题人 微博@iOS程序犭袁】

----------

12 【iOS】For in 循环中频繁创建临时变量的场景下,如何使用 Autorelease Pool 优化, 着重讲下你放置pool的位置,以及这些临时变量的生命周期改变。并给出原因。【难度🌟🌟🌟】【出题人 微博@iOS程序犭袁】

----------

Posted by [微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/)
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh)

----------


One more thing...



【非礼勿视】以下为彩蛋部分,建议28岁以上男性观看

----------

![image](https://ws3.sinaimg.cn/large/006tNc79ly1g311hw6id6j30u016e7wh.jpg)

![](https://ws4.sinaimg.cn/large/006tNc79ly1g331u0b06zj30u017r4qp.jpg)
/*one more thing*/

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.