Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ChenYilong opened this issue Jul 16, 2019 · 0 comments
Open

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

ChenYilong opened this issue Jul 16, 2019 · 0 comments
Assignees

Comments

@ChenYilong
Copy link
Member

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



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


enter image description here

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

下列题目可能出现以下虚拟的程序员,非实指:

  • 小地
  • 大风哥

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

用例一:

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

用例二:

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

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

       NSString *_name;
       NSMutableDictionary *_cache;
       int _length;
       char *_data;

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


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

  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】参考代码注释内容:

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程序犭袁
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0


One more thing...

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


image


/one more thing/

@ChenYilong ChenYilong self-assigned this Jul 16, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant