iOS学习面试题首页投稿(暂停使用,暂停投稿)

iOS Beijing面试的基本逻辑(2)

2016-06-22  本文已影响1061人  笨驴爱吃胡萝卜
240425-121011192H274.jpg

上一篇写了基本的面试流程,这篇从更决定一个人去和留下来谈薪资的问题出发,谈论几个面试问题。

前提

就目前市场供需和新项目的数量上看对于技术要求的苛刻是正常的。下面对于这份苛刻代价,总结了下几个对于iOS开发比较重要的问题。
baidu一查一堆,但是仍然乐此不疲的问着这些问题。

内存篇

这个是自从有代码以来避不开的话题,估计当年乔帮主也问过这样的问题,iOS的内存管理问题也是一直问个不停。
这几次的面试,发现大家对内存的问题集中程度很高,几乎没有新的。

  ARC 和MRC 的区别
  这个是arc 出来的那天起可能注定是个面试必问的问题,从用哪个效率高,到问底层是什么联系,和ARC 是怎么运行实现的。
  strong ,weak ,assign ,等底层的代码,不仅仅是引用系数的变化规则。  
  答案:《Objective-c 高级编程  ios 与osx 多线程和内存管理》的书中有详细的论述。
  http://www.cnblogs.com/ludashi/p/3911666.html?utm_source=tuicool&utm_medium=referral   博客论述

  autoReleasePool  问的最多是释放的时机,还有内部源码的实现
  答案 :对于每一个runloop,系统会隐式创建一个AutoRelease pool 。
            这样release pool 会构成一个象CallStack 一样的一个栈式结构。
            在每一个RunLoop结束时,
            当前栈顶的autoReleasePool 会被销毁,
            这样这个Pool里面的所有的object 会被release。
            --------------------------------------
          《Objective-c 高级编程  ios 与osx 多线程和内存管理》

这里涉及到runLoop 的知识点,也是面试必问的知识点,后文会有论述。

GCD篇

这里基础知识基本没有问,一些gcd的api 基本不问了。问的最多的用gcd 解决的问题。

      “如何确保多个线程完成的任务 都完成了,再往下运行”
      答案:dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
       //       Do some work after. dispatch_release(group);
     “几种线程处理,为啥用GCD”
       答案:http://blog.csdn.net/lgm252008/article/details/40039445
                 http://www.jianshu.com/p/d09e2638eb27
      从底层到上层分析了为啥用gcd
      gcd 的语法 dispatch queue ,once,after.....等等的gcd 的api 很少问了。问了最多还是对比比较多

标准答案 5
相识度 5
难度2

block 篇

这里问的最多的是block 关键字的问题,和让你默写一个block,我也没有get 到点

  __block  为了改变block代码块外部的变量。例如:你在外面定义了一个整形变量,想要在block块内改变它,那么,就要用__block 来修饰这个整形变量。
  __weak 是为了防止循环引用(memory cycle),引起内存泄露的问题。 
  __weak不增加引用,__block增加引用
 使用教程:http://my.oschina.net/leejan97/blog/268536

标准答案 5
相识度 5
难度2

终结

由于在外度假回来后在家研究些东西,更新不够及时。
下一篇开始写大戏runLoop,网上的文章太多。或者可以歇歇最近很火的react native。好纠结。
对于最近在找工作的同学想说,太热了。可是招聘市场仍然不太热,不够比上个月还是好一些的。加油

上一篇下一篇

猜你喜欢

热点阅读