iOS题目

简介: 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案。 1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 可以。可以。分类(@interface classname (yo

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

1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

可以。可以。分类(@interface classname (yourdefine))。用继承好,因为可以调用父类函数。

2.#import 跟#include 又什么区别,@class呢; #import<> 跟 #import”"又什么区别?

#import是oc引入头文件。include是c++/c引入头文件。@class是强制声明引用类。#import<>是引用框架或者库的头文件。#import""引用的是自己定义的头文件。

3.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用

4.id 声明的对象有什么特性?

累死于c++的void* 是指向万能的类。

5.MVC是什么?有什么特性?为什么在iPhone上被广泛运用?

Model view controller 。划分层次清晰。

6.对于语句NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别时什么类型的对象?

编译的时候是NSString 运行时候是NSdata 会有警告。

7.什么是安全释放?

if(object){[object release]; object = nil;}

8.为什么有些4.0独有的objective-c 函数在3.1上运行时会报错.而4.0独有的类在3.1上分配内存时不会报错?分配的结果是什么?


9.为什么4.0独有的c函数在3.1的机器上运行不会报错(在没有调用的情况下?)而4.0独有的类名在3.1的机器上一运行就报错?

10.常见的object-c的数据类型有那些, 和 c 的 基本数据类型有什么区别?如:nsinteger 和int

NSInteger在64位平台是int long 型的 

11.property中属性retain,copy,assgin的含义分别是什么?有什么区别?将其转换成get/set方法怎么做?有什么注意事项?

retain : [object release]; _object= object ; [_object retain];

copy :[object release];_object  =[object copy];

assign:[object release];_object = object;

12.委托是什么?委托的property声明用什么属性?为什么?

委托是观察者模式实现的一种方法。用assgin。防止循环引用。

13.浅拷贝和深拷贝区别是什么?…

14.NSString 和 NSMutableString 有什么区别?

15.自动释放池跟GC有什么区别?iPhone上有GC么?[pool release] 和[pool drain]有什么区别?

16.

for(int index = 0; index < 20; index ++){
    NSString *tempStr = @”tempStr”;
    NSLog(tempStr);
    NSNumber *tempNumber = [NSNumber numberWithInt:2];
    NSLog(tempNumber);
}

这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?

17.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?

+1操作别忘记-1.alloc。new。retain。

18.在一个对象释放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove这个对象可能会出现什么问题?

会找不到观察者。引起崩溃。

19.怎样实现一个 singleton的类.给出思路。

不要忘记同步单例;

20.什么是序列化或者Acrchiving,可以用来做什么,怎样与copy结合,原理是什么?.

21.线程是什么? 有哪些注意事项.?


22.在iphone上有两件事情要做,请问是在一个线程里按顺序做效率高还是两个线程里做效率高?为什么?

看具体问题。如果是有前后依赖关系 还是单一线程。如果可以并发的事件,就多线程。

23.runloop是什么?在主线程中的某个函数里调用了异步函数,怎么样block当前线程,且还能响应当前线程的timer事件,touch事件等.

24.ios平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗?

25.阐述一个nil对象从interface bulider产生,到载入程序运行空间,最后被释放时所经历的生命周期.


26.notification是同步还是异步? kvo是同步还是异步?notification是全进程空间的通知吗?kvo呢?

notification是同步的。notification不是全进程空间。

27.kvc是什么?kvo是什么?有什么特性?

28.响应者链是什么?

UIResponder;

29.unix上进程怎么通信?

30.timer的间隔周期准吗?为什么?怎样实现一个精准的timer?

31.UIscrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?

观察者。

32.如果要开发一个类似eclipse的软件,支持插件结构。且开放给第三方开发。你会怎样去设计它?(大概思路)

33.线程和进程的区别和联系?

34.C和obj-c 如何混用?

c:mm/cpp/m

obj-c:m/mm

35.以下每行代码执行后,person对象的retain count分别是多少

Person *person = [[Person alloc] init];   // count 1
[person retain];   // count 2
[person release];   //count 1
[person release];   //retain count = 1;

36.ViewController 的 loadView, viewDidLoad, viewDidUnload 分别是在什么时候调用的?

37.ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?

38.ios5新特性有那些?

39.谈谈你对ARC 的认识和理解?

目录
相关文章
|
网络协议 Unix Linux
CentOS7下利用FRR路由套件实现OSPF动态路由组网
CentOS7下利用FRR路由套件实现OSPF动态路由组网
2278 0
CentOS7下利用FRR路由套件实现OSPF动态路由组网
|
5月前
|
人工智能 安全 Linux
OpenClaw(Clawdbot) Linux部署全教程:本地搭建、ZeroNews接入及阿里云部署指南
OpenClaw(前身为Clawdbot)凭借“私有化运行+全权限实操”的创新定位,迅速成为AI领域的现象级开源项目。这款被称为“真正能做实事的AI”的工具,打破了传统聊天机器人的功能局限,可在本地设备或服务器上独立运行,通过WhatsApp、Telegram等常用聊天软件接收指令,完成文件读写、邮件管理、系统运维等实操任务,所有数据本地存储,隐私安全性拉满。
688 0
|
存储 人工智能 达摩院
“智慧照亮未来、科技赋能教育”阿里云AIoT联合导学教育 发布“导学号”智能作业灯
5月20日,阿里云AIoT联合西安导学教育科技发布新一代智能作业灯“导学号”。该产品运用AIoT、大数据、AI技术,将护眼灯、教材教辅、物联网技术结合在一起,是一款先进的具备护眼功能的智能学习机,具备指尖查题、智能辅导等功能,目前已经整合了3600万+数理化语文等教辅题库,覆盖了中小学各个年龄段,满足学生的多种学习需求。
803 21
“智慧照亮未来、科技赋能教育”阿里云AIoT联合导学教育 发布“导学号”智能作业灯
|
编解码 移动开发 缓存
HTML5网页3D场景制作之Three.js初体验-制作3D字体
WebGL(图形库是一个JavaScript API)在任何连接的WebGL中渲染图形的API,Web3D和Web3D的图形应用程序,可以单独使用一个WebGL通过引入与OpenGL 2.0一致的浏览器来使用WebGL 2.0 WebGL完美地解决了现有的Web交互式三维动画的两个问题: 第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件的支持; 第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。
1174 1
|
存储 缓存 前端开发
深入底层|JVM源码解读:HotSpot的模板解释器
深入底层|JVM源码解读:HotSpot的模板解释器
深入底层|JVM源码解读:HotSpot的模板解释器
|
Oracle 关系型数据库 Linux
DM8重做日志文件和归档管理
重做日志文件,用来保存redo日志,redo日志默认2个,循环使用,不断覆盖,联机日志由系统自动切换,不能手动切换,联机日志过小,会制造日志频繁切换,过大则浪费磁盘空间。
DM8重做日志文件和归档管理
|
缓存 数据安全/隐私保护 Windows
windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
1153 0
windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
|
弹性计算 固态存储 Linux
云服务器ECS,你真的懂吗?
云服务器ECS是阿里云最基础的弹性计算服务,总计规划了十余种规格族,几十种规格。用户在面对阿里云众多的产品种类,颇有种挑花了眼不知如何入手的感觉,本文就对阿里云最基础的云服务器ECS进行一下详细的介绍。
24054 5
|
数据安全/隐私保护 Windows
FreeSwitch中的会议功能设置
FreeSwitch中的会议功能设置