这两天面试了几家公司,现对面试中问到的题进行一下总结。
1.开发中使用过哪些加密算法?
到目前为止开发中使用过的加密算法,后来想想其实也就那么几个。
- AES。
- DES。
- 3DES。
- RSA。
加密其实我们只是针对一些敏感数据,密码之类的进行加密。因为加密是耗时的。
2.给你一个通讯录包含三个字段(姓名、电话号、聊天记录)你能用它来做什么?
在我看来,一个通讯录就是一个数据库,我能想到的就是对它进行增删改查。根据聊天记录,分析出主人的交际关系,从事的行业。
3.给你一张很大的图片你怎么传输?
一张大图,一次肯定是传不完的。首先应该对这张图片进行压缩。其次进行分片传输。
分片传输又分为并发传输和串行传输。并发传输需要加入标记,保证数据传输以后的顺序,并发传输速度快。串行传输能直接保证数据的有序性,但是传输速度慢。
4.使用多线程做过什么?
对于多线程的使用,我印象最深的就是发布作品的时候,多张图片并发上传,而且上传以后要保证图片的显示是有序的。我使用的是GCD的dispatch_group_async
和dispatch_get_global_queue
组合的方式,在所有的图片上传完成以后,再在dispatch_group_notify
的block中,对发布作品进行后续的操作。
5.这个是现场出题,拿出他们公司的App,让你体验一下,问你如何进行优化?
拿过面试官手中的手机,点击了他们App的一个模块,发现页面加载很慢。加载完了以后发现是一个列,面试官问我如何进行优化。我根据以往的经验,进行了如下的优化。
-
开启AFNetWorking的GZip压缩。面试官说这个他们已经做了。 - 进行数据缓存。但是面试官说他们这个列表的更新是不定的,有可能某条数据在不确定的时间需要进行更新。数据缓存的方案也失败了。
- 分页的pagesize改小一点。这一条得到面试官的认可。因为我操作的时候发现他们每次请求的数据条数有点多,超过20条了。其实分页的pagesize应该适中,每次返回的数据条数够大屏手机的一屏就可以了。这样的话,网络的响应速度就能提升一些了。
- 使用Webp对加载的图片进行压缩。这是我后来想到的,这样也能减少数据量,提高响应速度。提升App整体的用户体验。
通讯录那题是个开发性问题,有什么不同的见解的欢迎留言讨论。
网友评论