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(技术清谈)【005期】【代号:变形金刚-擎天柱】 #119

Open
ChenYilong opened this issue May 7, 2019 · 0 comments

Comments

@ChenYilong
Copy link
Owner

ChenYilong commented May 7, 2019

iTeaTime(技术清谈)【005期】【代号:变形金刚-擎天柱】



出题:微博@iOS程序犭袁

本期代号:变形金刚-擎天柱



enter image description here

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

今天会从没有修改马甲(马甲格式为【昵称+地区/公司/职位】)的同学中随机抽取几位幸运儿,送出飞机票若干张。待会儿我出题,回答任意一道即可,别人回答过的,不能再回答,交卷时间为出题日第二天20点。因为是自己出的题,大部分网上没有答案。可以讨论,没点名同学,抢答正确后,请自觉补充同类型问题一道供点名同学回答。题目能够精准筛选非技术同学即可,不需要很难。


1 【问题】【算法】缓存操作进行优化的措施中,有没有迎合用户“喜旧厌新”的算法技巧,可谓是缓存界的“断舍离”算法?也即:那些过去经常被访问的,将来也很可能被访问,优先级提高。那些长时间不被访问的,直接删了就好。描述下算法的实现原理。给出工作中至少两个使用场景。【 难度🌟】【出题人 微博@iOS程序犭袁】
【答案】LRU彻汰策略,应用场景比如iOS的两个常用库:Lottie、YYCache。


2 【问题】【在IM开发中】app 接收到一个message,上层UI刷新一次,要求考虑到CPU和电量消耗,解决短时间内接收到很多条消息的问题。怎么解决?有几种方案?【出题人:远之²³³³-free zone-北】【 难度🌟🌟】
【答案】

方案一:利用联结(在异步线程上调用dispatch_source_merge_data后,就会执行 dispatch source 事先定义好的handler)、DISPATCH_SOURCE_TYPE_DATA_ADD,将刷新UI的工作拼接起来,短时间内做尽量少次数的刷新。

方案二:自己实现队列、确定一个合适的时间阈值,在阈值时间到达时、主动取消息或者被动接受消息,最后刷新UI,达到消息限流的作用。举例:假设我们消息的获取都是通过长连接推送过来的,而不是主动拉取的。可以用消息队列来做,消费者定期去队列取数据进行数据展示。
或者假设前一条 消息和后一条消息间隔只在0.2s以内,就可以认为是频繁收到消息。然后把这0.2s内的消息刷新相关操作,比如做个动画效果。


3 描述:如图label1在containerView上,containerView、label2在cell.contentView上
问题:label1与label2的字数不固定,需求是,无论label2字数多少,label1都不能被拉伸或者压缩:【 难度🌟🌟🌟】【出题人:记忆、搁浅】

Pasted Graphic 3

效果图见:

Pasted Graphic 4

【答案】需要给label1设置一下优先级,设置平行的的Content compression resistance priority。

系统 Autolayout 参考 :

Masonry 参考以下属性:

   static const MASLayoutPriority MASLayoutPriorityRequired = UILayoutPriorityRequired;
   static const MASLayoutPriority MASLayoutPriorityDefaultHigh = UILayoutPriorityDefaultHigh;

图形化操作见以下动图:

1557371233399


4 【计算机常识】如果你一直在用GitLab开发,现在公司要切换到GitHub开发,可以两个邮箱不一样,你自己的提交记录,GitHub无法识别,签到数据也没了,请问如何让GitHub能够识别你整个仓库中所有的提交记录。【难度🌟🌟】【出题人 微博@iOS程序犭袁】
【注】“签到数据”指的是下图:
image
【答案】参考:


Posted by 微博@iOS程序犭袁
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0


One more thing...

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


image

@ChenYilong ChenYilong changed the title 微信群面试题第五期答案 微信群面试题第005期答案 May 10, 2019
@ChenYilong ChenYilong changed the title 微信群面试题第005期答案 微信群面试题【005期】 May 10, 2019
@ChenYilong ChenYilong changed the title 微信群面试题【005期】 微信群面试题【005期】【代号:变形金刚-擎天柱】 May 14, 2019
@ChenYilong ChenYilong changed the title 微信群面试题【005期】【代号:变形金刚-擎天柱】 技术清谈【005期】【代号:变形金刚-擎天柱】 May 26, 2019
@ChenYilong ChenYilong changed the title 技术清谈【005期】【代号:变形金刚-擎天柱】 iTeaTime(技术清谈)【005期】【代号:变形金刚-擎天柱】 Jul 10, 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