首页 > 代码库 > iOS面试题总结与感想

iOS面试题总结与感想

必须先吐槽一下,找工作面试确实是个累人的活呀,所以—>跳槽有风险,选择需慎重.LZ我为什么要换工作呢?就不在这里说明了…直接进入正题,这周的面试基本每天从早面到晚,面试表都填吐了…大小公司都有,列举下这段时间常见的面试题和一些个人理解.PS:LZ我水平有限,不好的地方,大家轻喷^_^!(由于全然是靠记忆,列举顺序纯凭感觉0.0)

  1. @property中的assign,retain,copy,nonatomic的意思各自是什么? (解释略…你懂的)
  2. weakassign的差别,strongretain的差别,copyretain的差别?


    assign适用于非对象类型,weak弱引用在引用计数为0的时候会将对象置为nil.
    事实上从这个也能够引申到内存管理的一系列问题.面试官会让你讲讲MRCARC的理解,随即也引申出Block的内存机制,为啥推荐Blockcopy,Block会存在哪些内存问题?

    循环引用?


    推荐一个文章,讲的蛮不错的,里面也有对Block的链接引用->传送门,请点击我

  3. 依然是内存管理,releaseautorelease的含义?这里尤其要强调下autorelease,它引申出自己主动释放池,也能引申出Run loop!
    參考下这两个链接:參考1号@參考2号(PS:有的链接可能须要FQ,可是作为一个开发者来说, 拥有VPN进行google还是必备的吧!)
  4. OC语言的动态性指什么?有没有了解过objective-c runtime的相关问题?它包含那些含义?
    依然给出一些不错的文章链接:Number1@Number2@Number3
  5. 使用过Core Graphic Core Animation Quartz Core等经常使用框架吗?在什么条件下会用到?

    能够实现什么功能?一般这样的问题,都是涉及到你自己定义UI控件的能力,以及能够实现炫丽动画效果的能力.(含义非常广,大家自行找资料,还是推荐个0.0->讲Core Animation的)

  6. iOS中多线程有哪几种?

    各自之间有什么差别?这个问题,毋庸置疑,必问!!!
    NSThread:貌似基本没到过…囧….能够去了解下….
    NSOperation:据说是用在处理复杂的情况下…经常被问到与GCD的不同,LZ略纠结每次都不知道怎么回答,仅仅能说一个处理复杂情况一个处理简单情况…也没用到过…只是你研究下AFNetworking的源代码,能够发现,它的核心类是继承NSOperation的…
    GCD:经常使用…这个能够看看我的博客,里面非常多它的介绍! 点这里

  7. 数据存储这一块,你经常使用哪一种?什么是序列化?

    sqlite是直接用它还是用封装了它的第三方库?sqlitecore data的差别?
    LZ碰到的基本都是问sqlitecore data的差别…从什么方面来决定一个项目採用哪种方式来做存储…个人认为没有必要区分谁好谁坏…都去了解掌握肯定是有优点的…网上有非常多讲两个之间的差别,可是就算你知道差别,假设两个都用不好也是白搭.唯有一解->学!学!学

  8. 代理通知…分别在什么情况下使用?

    差别?

    各自优点?

    (略,略,略,自行谷歌)

  9. 你经常使用一些第三方库吗?比方AFNetworking SDWebimage JsonModel等,有没有去了解过里面的实现原理?


    强烈推荐大家,最好都去看看源代码,不要仅仅知其而不知其所以然,能够学习到非常多知识.也算是一次总体知识架构的温习,也能学习到一些优秀库的设计模式等.

  10. KVCKVO是什么?

  11. 是否了解Socket网络编程?是否明确TCP/IP HTTP UDP等协议知识?
    參考1号@參考2号…非常多,自己去找吧
  12. 你知道哪些设计模式?实际项目中运用到了吗?(LZ我仅仅回答了,单例-策略-观察者-工厂-代理(事实上我认为代理不能算进去))
  13. MVC是什么?你能画出它们之间的关系图吗?

    (对的,绘图)

  14. 你的C++怎样?算法和数据结构呢?(这个都是泪呀)->依然是补!补!补!
  15. Autolayout的理解…使用的怎么样?

    能够看看我的这篇…尽管没具体讲Autolayout…大家能够多搜搜…这就是涉及到你写代码是纯代码还是storyboard了…建立两种都必须掌握.

  16. 有没有学习Swift?这个,LZ建议,毕竟苹果给你开发的框架库没变,能够拿它写写Demo保持认识度,要不然,你仅仅看不写,过一段时间又把它忘记了,就白看了…亲身体会…起码我如今能用swift来写写一些Demo就用它来写写….工作肯定还是用OC啦,只是也有的公司说已经全然用swift来开发了,仅仅能说,毕竟还仅仅是非常少数的…
  17. 眼下临时想到这些…假设还有,再更新!0.0

说以下试的感想吧:
+ 并非会写OC,会调用API,你就是一个iOS开发project师了…你必须扩展你知识的广度和深度,对于非常多招聘要求你会C++的时候,不要老想着自己是来应聘iOSproject师而不是C++project师…语言仅仅是一种工具,当你功力OK的时候,你会发现去学习一门语言没有你想象的那么难,仅仅能说要精通是略难的…非常多时候须要的是你有那么一种概念,比方你项目中须要去调用一个库,那个库是C++写的,假设你全然看不懂,咋办…这也就是说并非要你自己全然的去写一个出来…我们开发的非常多时候,都是要善于运用第三方的框架…再举个样例,音频视频…解码转码或者什么什么的,具体的东西可能不须要你去了解,你仅仅须要会使用一种工具(如:ffmpeg)来完毕它.
+ LZ我就像我上面说的那样…羞愧呀…只是算是从学swift后,换了一种思想,不再那样的去排斥语言间的不同了,认为自己也要在平时有空暇的时候,认真的学习下c++(事实上我曾经是想做游戏的…还说自学cocos2dx),也能够把大学里面有关计算机网络的书籍再次看下,多了解下网络编程…TCP/IP…HTTP协议等.
+ 开发应用,不要仅仅停留在一个方向…多横向发展,接触下其它类型的应用.比方,我找工作就有意于IM 音频视频等,毕竟没接触过…可是这仅仅是个人意愿,前提别人肯要我,0.0哭0.0
+ 切记好高骛远,一步登天…技术须要沉淀,心态须要淡定,什么时候都要虚心学习.前面我说的都是建立在你做好基本事情的基础上…想想,啥都不精,没有一技之长,怎么能脱颖而出?怎么能够完毕你所在岗位的任务?iOS开发这一块的知识也要保持不断的学习…UI布局-动画效果-逻辑控制-数据存储-和各端的对接-总体架构.
+ 公司的项目应该全部的都是结果导向性,假设你完毕不了任务,那么你完毕任务过程中全部的出彩点都会变得一无是处.
+ 依然临时想到这些…再想到别的,再更新…待续.~O(∩_∩)O~

技术分享

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

iOS面试题总结与感想