iteatimeteam / Friday-QA

iTeaTime |技术清谈 微信群每周五问答环节
MIT License
229 stars 19 forks source link

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

Open ChenYilong opened 5 years ago

ChenYilong commented 5 years ago

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](https://ws3.sinaimg.cn/large/006tNc79ly1g311hw6id6j30u016e7wh.jpg) ![](https://ws4.sinaimg.cn/large/006tNc79ly1g331u0b06zj30u017r4qp.jpg) /*one more thing*/