`
ydbc
  • 浏览: 722722 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

iOS object-c 面试题

 
阅读更多

面试了几轮了,总结下面试中会被经常提问到的问题:


1.iPad开发与iPhone开发有什么不同?

答:开发iPad和iPhone应用使用的是相同的SDK,它们之间的区别主要体现在设备硬件和UI操作上。(1)设备硬件:由于iPad不具备电话功能,iPad1也没有相机,所以相关的特性如电话、SMS等无法使用。(2)UI操作:由于iPad屏幕大小为9.7英寸,而iPhone的屏幕是3.5英寸,这就决定了两者操作方式的不同。有些控件,如UIPopoverController, UISliptViewController 只能在iPad中使用,而不能在iPhone中使用;而且当需要presentModalViewController时,Window presentation style 只对iPad有效;除此之外,iPad产品开发中还需针对iPad大屏幕考虑加入多指手势以增加用户体验。

2.Objective-C与C、C+++之间的联系和区别?

答:Objective-C和C++都是C的面向对象的超集。

Object与C++的区别主要点:Objective-C是完全动态的,支持在运行时动态类型决议(dynamic typing),动态绑定(dynamic binding)以及动态装载(dynamic loading);而C++是部分动态的,编译时静态绑定,通过嵌入类(多重继承)和虚函数(虚表)来模拟实现。
Objective-C 在语言层次上支持动态消息转发,其消息发送语法为 [object function]; 而且C++ 为 object->function()。 两者的语义也不同,在 Objective-C 里是说发送消息到一个对象上,至于这个对象能不能响应消息以及是响应还是转发消息都不会 crash; 而在 C++ 里是说对象进行了某个操作,如果对象没有这个操作的话,要么编译会报错(静态绑定),要么程序会 crash 掉的(动态绑定)。

另可以参考:(罗朝辉Blog) http://www.cppblog.com/kesalin/archive/2010/12/26/compare_objective_c_and_c_plus_plus.html


3.#include与#import的区别;#import与@class的区别。

#import指令是Object-C针对#include的改进版本,#import确保引用的文件只会被引用一次,这样你就不会陷入递归包含的问题中。

#import与@class二者的区别在于:

  1. #import会链入该头文件的全部信息,包括实体变量和方法等;而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑。
  2. 在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
  3. 在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
  4. 如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.


4.loadView 和 viewDidLoad 的区别

5.简单介绍Core Data

面试了几轮了,总结下面试中会被经常提问到的问题:


1.iPad开发与iPhone开发有什么不同?

答:开发iPad和iPhone应用使用的是相同的SDK,它们之间的区别主要体现在设备硬件和UI操作上。(1)设备硬件:由于iPad不具备电话功能,iPad1也没有相机,所以相关的特性如电话、SMS等无法使用。(2)UI操作:由于iPad屏幕大小为9.7英寸,而iPhone的屏幕是3.5英寸,这就决定了两者操作方式的不同。有些控件,如UIPopoverController, UISliptViewController 只能在iPad中使用,而不能在iPhone中使用;而且当需要presentModalViewController时,Window presentation style 只对iPad有效;除此之外,iPad产品开发中还需针对iPad大屏幕考虑加入多指手势以增加用户体验。

2.Objective-C与C、C+++之间的联系和区别?

答:Objective-C和C++都是C的面向对象的超集。

Object与C++的区别主要点:Objective-C是完全动态的,支持在运行时动态类型决议(dynamic typing),动态绑定(dynamic binding)以及动态装载(dynamic loading);而C++是部分动态的,编译时静态绑定,通过嵌入类(多重继承)和虚函数(虚表)来模拟实现。
Objective-C 在语言层次上支持动态消息转发,其消息发送语法为 [object function]; 而且C++ 为 object->function()。 两者的语义也不同,在 Objective-C 里是说发送消息到一个对象上,至于这个对象能不能响应消息以及是响应还是转发消息都不会 crash; 而在 C++ 里是说对象进行了某个操作,如果对象没有这个操作的话,要么编译会报错(静态绑定),要么程序会 crash 掉的(动态绑定)。

另可以参考:(罗朝辉Blog) http://www.cppblog.com/kesalin/archive/2010/12/26/compare_objective_c_and_c_plus_plus.html


3.#include与#import的区别;#import与@class的区别。

#import指令是Object-C针对#include的改进版本,#import确保引用的文件只会被引用一次,这样你就不会陷入递归包含的问题中。

#import与@class二者的区别在于:

  1. #import会链入该头文件的全部信息,包括实体变量和方法等;而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑。
  2. 在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
  3. 在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
  4. 如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.


4.loadView 和 viewDidLoad 的区别

5.简单介绍Core Data

分享到:
评论

相关推荐

    ios object-c 面试试题 及答案

    ios object-c 面试试题 及答案

    Objective-C笔试题

    非常辛苦收集的Objective-C笔试题,自已作了整理,并分成了5份试卷,附答案。之前用于公司的新人培训计划。

    object-c实现多手势加仿射变换(面试题)

    给图片添加捏合和旋转手势,应用仿射变换写出相应的响应方法。北京智美方成ios面试题。详细讲解: http://a3.work/a/oc/103.html

    IOS面试题归总

    IOS面试题归总 Object-C有多继承吗?没有的话用什么代替 Object-C有私有方法吗?私有变量呢 关键字const什么含义 关键字volatile有什么含义?并给出三个不同例子? static作用 #import和#include的区别,@class代表...

    iosOC部分经典面试题大全总共26页题集

    iosOC部分经典面试题大全总共26页题集

    iOS 面试题

    iOS 面试题: Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的...

    ios开发ios基础开发面试题.txt

    此资源为IOS开发者面试的时候高频面试题,几乎逢问必答,高薪offer必经之路,建议多多学习。

    leetcode题库-iOS-Interview-Questions:收集整理iOS笔试面试题

    面试问题列表 iOS 笔试题库 知识类 基础知识 keyWindow和window的区别 assign copy retain区别 HTTP的数据传输 动态绑定 subclass category protocol extension 区别 单例的实现 performSelector:withObject:方法的...

    《招聘一个靠谱的iOS》面试题参考答案(上).md

    Objective-C -> Object-C JSON -> Json HTTP -> Http 还有,注意中英文间用一个半角空格隔开,排版会漂亮很多,简历承载的不仅是内容,还有细节和态度,上面这些点往往都反映着面试者的代码风格、做事的认真程度。...

    java棒打猪头游戏源码-iOS-Interview:iOS-面试

    这是自己从一个收费的面试题应用上抓取到的数据,一共有两百多道,主要面向初级开发者,自己也做了相应的补充。 虽然说自己掌握基本功是最重要的,但是多准备一下也不会有什么坏处,在此希望能给你们带来些许帮助。 ...

    ios试题总结

    自己临离职的时候从网上搜索了各种面试题,总结到一起了,

Global site tag (gtag.js) - Google Analytics