面试笔试精华(四)

1.        Object-C有多继承吗?没有的话用什么代替?


1>  OC是单继承,没有多继承

2>  有时可以用分类和协议来代替多继承

2.        Object-C有私有方法吗?私有变量呢?


1>  OC没有类似@private的修饰词来修饰方法,只要写在.h文件中,就是公共方法

2>  可以直接在.m文件中(比如类扩展)声明和实现方法,对编译器来说是私有的

3.        关键字const什么含义?

const int a;

int const a;

const int *a;

int const *a;

int * const a;

int const * const a;

1> 前两个的作用是一样:a 是一个常整型数

2> 第三、四个意味着 a 是一个指向常整型数的指针(整型数是不可修改的,但指针可以)

3> 第五个的意思:a 是一个指向整型数的常指针(指针指向的整型数是可以修改的,但指针是不可修改的)

4> 最后一个意味着:a 是一个指向常整型数的常指针(指针指向的整型数是不可修改的,同时指针也是不可修改的)

4.        static的作用?

1>  static修饰的函数是一个内部函数,只能在本文件中调用,其他文件不能调用

2>  static修饰的全部变量是一个内部变量,只能在本文件中使用,其他文件不能使用

3>  static修饰的局部变量只会初始化一次,并且在程序退出时才会回收内存

5.        线程和进程的区别?

1>   一个应用程序对应一个进程,一个进程帮助程序占据一块存储空间

2>   要想在进程中执行任务,就必须开启线程,一条线程就代表一个任务

3>   一个进程中允许开启多条线程,也就是同时执行多个任务

6.        堆和栈的区别?


1>   堆空间的内存是动态分配的,一般存放对象,并且需要手动释放内存

2>   栈空间的内存由系统自动分配,一般存放局部变量等,不需要手动管理内存

7.        为什么很多内置的类,如TableView的delegate的属性是assign不是retain?


1>  tableView的代理一般都是它所属的控制器,控制器会对它内部的view做一次retain操作

2>  假设tableView也对代理(控制器)做一次retain操作,那么就出现循环retain问题

8.        定义属性时,什么情况使用copy、assign、retain?


1>  copy:NSString、Block等类型

2>  assign:基本数据类型

3>  retain:OC对象类型

9.        对象是什么时候被释放的?


每个对象都有一个引用计数器,每个新对象的计数器是1,当对象的计数器减为0时,就会被销毁

10.     tableView的重用机制?


这里只是简述:将离开屏幕的cell放到缓存池,重新拿来显示到屏幕的其他位置(其他自己详细描述)

11.     ViewController 的loadView、viewDidLoad、viewDidUnload分别是什么时候调用的,在自定义ViewCointroller时在这几个函数中应该做什么工作?

1>  loadView

  • 当第一次使用控制器的view时,会调用loadView方法创建view
  • 一般在这里自定义view

2>  viewDidLoad

  • 当控制器的view创建完毕时会调用,也就是在loadView后调用
  • 一般在这里添加子控件、初始化数据

3>  viewDidUnload

  • 当控制器的view因为内存警告被销毁时调用
  • 一般在这里回收跟界面相关的资源(界面都会销毁了,跟界面相关的资源肯定不要了)

12.     ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是什么?


  • 当应用程序接收到系统的内容警告时,就有可能调用控制器的didReceiveMemoryWarning方法
  • 它的默认做法是:

l   当控制器的view不在窗口上显示时,就会直接销毁,并且调用viewDidUnload方法

13.     怎么理解MVC,在Cocoa中MVC是怎么实现的?


1>  M:Model,模型,封装数据

2>  V:View,视图界面,负责展示数据

3>  C:Controller,控制器,负责提供数据(Model)给界面(View)

14.     self.跟self->什么区别?


1>  self.是调用get方法或者set放

2>  self是当前本身,是一个指向当前对象的指针

3>  self->是直接访问成员变量

15.     id、nil代表什么?

1>  id类型的指针可以指向任何OC对象

2>  nil代表空值(空指针的值)

16.     如何对iOS设备进行性能测试?

Timer Profile

 
 
 

iOS开发——面试笔试精华(四)的更多相关文章

  1. iOS开发——面试笔试精华(二)

    面试笔试精华(二) 警告:一定要把英文题目过一遍,有些公司的题目故意弄成英文的!!! 1.        Difference between shallow copy and deep copy? ...

  2. iOS开发——面试笔试精华(三)

    面试笔试精华(三) 1.        When to use NSMutableArray and when to use NSArray? 什么时候使用NSMutableArray,什么时候使用N ...

  3. iOS开发——面试笔试精华(一)

    面试笔试精华(一) 1.        #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1>  #imp ...

  4. iOS开发Swift篇—(四)运算符

    iOS开发Swift篇—(四)运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运算符: ...

  5. iOS开发——面试指导

    iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. ...

  6. iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流

    在上一篇博客中<iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流>,自定义瀑布流的列数,Cell的外边距,C ...

  7. ios开发入门篇(四):UIWebView结合UISearchBar的简单用法

     UIWebView是ios开发中比较常用的一个控件.我们可以用它来浏览网页.打开文档等,今天笔者在这里简单介绍下UIWebView和UISearchBar结合起来的用法,做一个简单的类浏览器. 一: ...

  8. ios开发——面试篇C语言精华

    面试篇C语言精华    1.面向过程:分析解决问题所需要的步骤,然后用函数把这些步骤一步一步实 现. 面向对象:直接描述客观世界的对象及其相互关系.现实世界中任何实体都 可以看作是对象,对象之间通过消 ...

  9. iOS开发——面试总结(一)

    面试总结(一) 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题: 1.搞清楚touch事件的传递(事件的响应链) 事件的响应(responder chain) 只有继承了UIRespon ...

随机推荐

  1. 深入理解Java虚拟机 - 类加载器

    引子:       类加载器(classloader)是独立于虚拟机之外,可以独立实现的代码模块.     OSGi使用了类加载器的这一特点实现其热插拔的特性       Java同C++等语言不通, ...

  2. bzoj1057,poj3250

    bzoj1057本质上是求最大子矩阵: 第一问是一个经典的O(n2)dp 第二问就是最大子矩阵,回眸一下当年卡了我很久的问题: 首先穷举显然不行(这不废话吗?): 首先我们预处理每个点可以最大向上延展 ...

  3. vijosp1507郁闷的出纳员

    一道平衡树实现的名次树,用了treap实现. 1.rand()产生的数可能比INF大,很可能改变树的结构. 2.删除时先递归,然后再删除自己,实现就变得简单多了. 3.因为很多情况树会是空的,所以设了 ...

  4. PHP简单下载

    ·php escapeshellcmd多字节编码漏洞 ·详细讲解PHP中缓存技术的应用 ·利用PHP V5开发多任务应用程序 ·详细解析 PHP 向 MySQL 发送数据过程 ·PHP实现静态发布的方 ...

  5. 打造自己的reset.css

    http://shawphy.com/2009/03/my-own-reset-css.html 最近我对此观点有所新的看法,可以查看<真的还需要reset.css么?> 0,引言 每每有 ...

  6. c语言中 int *p = NULL 和 *p = NULL 有什么区别

    1. int *p = NULL; 代表定义一个指向整型变量的指针p,然后p的值设为NULL,也就是设为0:用另一种方式说,就是对一个刚定义的指向整型变量的指针,赋初始值,让其指向0地址. 2. *p ...

  7. RMAN数据库异机迁移步骤

    --RMAN数据库异机迁移步骤----------------------------2013/09/28 测试环境:AIX+ora11g   一. source数据库准备.   1.获取数据文件编号 ...

  8. 【转】Android.mk文件语法规范(Android.mk File)

    原文网址:http://blog.csdn.net/smfwuxiao/article/details/8530742 1.Android.mk文件概述 Android.mk文件用来告诉NDK编译系统 ...

  9. 使用VSS2005的时候报错:输入正确的服务器地址依然出错了

    使用VSS2005的时候报错:输入正确的服务器地址依然出错了 使用VSS2005的时候报错: 在安装完vss客户端,进入vss服务器的时候,需要vss服务器的ip和数据库名称.以及初始化文件, 我在进 ...

  10. 使用VS2010调用matlab的mat格式文件

    做实验需要将matlab实现的meanshift的结果中的region的Iabels矩阵,需要把labels.mat读入VS2010中,实现功能,在此把实现过程记录下来. C++读取mat文件的步骤如 ...