ios面试题

如何实现对象的交互

,在数据中无非就是数据的发送者和接受者,,我们通过代理进行通信,或者通过观消息模式

2.如何对产品进行多语言发布

除了h和m 文件不能对发布外,其他的都可以多语言支持

线程同步的

MutexLock 互斥锁和条件锁消息传递

UDP和TCP

TCP是条件传输控制协议,是连接的,可靠的、点到点的

udp 是用户数据包协议 非连接,不可靠,可以一点对多点的协议

如何选择,看程序的的注重点

TCP/IP连接的过程

TCP/IP是三次握手

1.建立连接,客户端发送连接请求道服务器,并进入SYB_SEND(syb_send)等待服务器确认

2.服务器收到客户端的连接请求,并向客户端发送允许连接应答,此时服务器进入syn_recv状态

3.客户端收到服务器的允许连接,向服务器确认,客户端向服务器端进行通信

就是进行三次连接信息的发送和接受过程

全局变量可不可以定义在多个c文件包含的头文件中

可以,在不同的c 文件中,以不同的static 形式来命名同名全局变量,前提是其中只能有一个c文件对此全局赋初值

如何引用一个已经定义过的全局变量

1.用头文件的方式,,假如那个变量写错了,编译期间会报错 2.也可以用extern关键字,编译期间不会报错,而在连接的时候会报错

什么叫数据结构

计算器存储和组织数据的方式 是相互存在的一种或多种特定关系的数据元素的集合

保存数据有哪几种方式

数组,自定义类,文件操作,数据持久化(偏好设置、plist coredate SQlite ,归档和反归档)

sizeof 和strlen

sizeof()是运算符,可以用类型做参数也可以用函数做参数,

strlen()是函数,运算时才能计算,参数必须是字符行指针,必须以\0结尾,功能是返回字符串的长度

什么是抽象类

在c++中,含有纯虚拟函数的类,在java 中,含有抽象方法的类,只是做基类的,不能实例化

@interface 声明一个类

和@property 声明的是两个函数,Getter和setter,编译器会自动生成2个函数

do while 和while do

do while 是先执行后判断,条件不满足也执行一次

while do 是先判断后执行,条件不满足也执行一次

几个死循环

while (1) {}、

for (;;){}

用预处理#define声明一个常数,用表明一年有多少秒

#define SECONS——PER_YER (60*60*24*365)UL

#define SECONDS_PER_YER(60*60*24*365)UL

assign 普通语言的赋值,不改变计数器

retain 是保存一个对象需要拥有的对象,拷贝指针,引用计数器+1,并用release计数器减1

copy 是NSString ,内容拷贝 拷贝之前会释放旧的对象,并且开辟内存空间在栈中

retain对其他NSObject 和其他子类

readonly,是只读,只生成Getter方法,不生成setter方法,在@implementation ,中只需要一个读取器,在#synthesize 关键字,有读取方法被解析

read write 设置可供访问级别, 设置器和读取器都需要@implementation实现,在使用@synthesize关键字,都被解析

nonatomic 非原子访问,对属性赋值时,不加锁,多线程并发访问提高性能

aotomic 和nonaotomic 是决定编译器生成Getter和setter是否是原子操作,在多线程,原子操作是必要的,否则引起错误

weak和Strong,是在ARC的情况下使用,,用weak相当于assign而Strong相当于retain

只有一种情况下需要使用weak ,就是就是父类含有子类,而子类又调用父类,声明weak的指针,指针一旦被释放,这些地址就为nil ,这样有效的防止了野指针,

(1)在拖线操作中使用weak,(2delegate中使用weak),一般来说,类的外部用weak

Strong,在类的内部用Strong

UIResponder触摸处理 touchBegintouchEnd nextResponder

const 是只读,用来保护那些不希望被改变的参数,防止其被其他恶意代码修改

_block 和_weak 修饰的区别

_block 在ARC 和MRC都可以用,可以修饰对象也可以修饰基本数据类型,可以在block 中重新赋值,

_weak 只能在ARC模式下使用,只能修饰对象NSString ,不可以修饰基本数据类型int

tableView滑动卡的原因,在缓冲或者本地读取图片的UIImage 的时候耗费了时间,需要把放在子线程

NSData*imagData=[NSData dataWithContentsOfURL :[NSURL URLWithSTring:app.icon]]

UIImage*image=[UIImage iamgeWithData:imgData];放到主线程

把UIImage赋值给图片的时候在主线程,子线程不能更新UI,所有的UI更新都在主线程,这样就造成主线程卡

在子线程假如NSTimer的时候需要手动添加NSRunLoop,否则不能循环

单例中添加MutabelArray的时候,防止多个地方对他同事便利和修改,需要加上原子属性,并且用Strong

_weak viewController*weakSelf=self;

GCD里面用_weak防止内存释放不了,循环引用

SDWebImage的原理:先从内存中查找是否有图片,如果有图片缓存,就展现,如果没有就回调下载

UIButton的父类是UIController—>UIView->UIResponder

100以上是连接成功200以上是正确 ,302是请求重定向,400以上是连接错误或者找不到服务器,500以上是服务器错误

HTTP是请求《—》响应模式客户端《—》服务器发送请求

dispatch_async

dispatch_Group_async

dispatch_barrier_async

dispatch_apply

static 关键字的作用

在函数体内static变量的作用范围为该函数体,被内存分配一次空间,所以下次调用时,还是维持上次的值

static 在模块内全局变量、函数,可以在整个模块内使用,不能在模块外使用

static 成员变量属于整个类所拥有,对象的所有值只有一份拷贝,只能访问类的static成员变量

进程和线程

进程和线程都是操作系统下的程序运行的基本单元,不同的是,有不同的操作系统管理方式,进程有独立的地址空间,如果一个进程奔溃,不会影响其他进程,而线程只是一个进程中不同执行路径,线程有自己的的堆栈和局部变量,多进程比多线程健壮,但是进程切换时耗费资源大,效率低,对于一些要同时操作并共享某些变量的,只能用线程,不能用进程

堆和栈的区别

栈是由编译器自动管理,堆是由程序员自己控制

栈是由低地址拓展的数据结构,是一块连续的内存区域,在window下栈的大小是2M,获取的空间小,先进进出,不会造成效率低,可以静态、动态分配,效率高

堆,是高地址拓展的数据结构,是不连续的,获取的空间大,可能造成大量碎片,造成程序效率降低,动态分配的,是由函数库分配

键—值

目标—动作机制

目标是动作消息的接受者,一个控件,保有其动作消息的目标

动作是控件发送目标的消息,或者说是响应目标而实现的方法

OC的内存管理

,如果你通过分配和初始化的方式创建对象,你就拥有这个对象,需要对该对象进行释放,如果你拷贝一个对象,你就拥有拷贝的对象,需要负责该对象的释放;如果你保持一个对象,就拥有了该对象的部分,需要不在使用的情况下进行释放,如果你从其他对象接收对象,则你不拥有对象 ,你就不应该释放他

自动释放池的作用

类工厂方法

向客户提供方便,他们将分配和初始化合在一个步骤中,返回被创建的对象,并自动释放处理+(type)className使类提供单件实例,可以避免盲目分配内存

OC的优缺点

1.category2.posing3.动态识别 4.指针计算 弹性讯息传递可以进行c++混编不是一个过度复杂的c衍生语言

缺点 1.不支持命名空间 不支持运算符重载 不支持多重继承

strcpy 是字符串拷贝的函数。它的函数原型是strcpy ,以\0结尾,由于拷贝的长度不是由我们决定,所有容易出错

memcpy 是内存拷贝,长度可控,但是可能存在内存叠加的问题

sprintf是格式化函数,,长度不可控,可能会造成溢出

什么时候用delegate,什么时候用notification

delegate是one—to —- one并且将返回值给sendernotification是one—to —one /many ..无法将返回值给sender,所有呢delegate,希望得到返回值,而notification,只是简单的通知

kvc是一个对象都在调用setValue的时候。首先是根据方法名找到所需要运行的环境参数——》根据isa 指针结合环境参数,找到具体实现的借口—》再直接查找的来的具体的方法实现


http://zhangmingwei.iteye.com/blog/174843118

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 1,955评论 0 7
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,001评论 0 12
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,342评论 0 35
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,118评论 29 470
  • 1.写一个NSString类的实现 +(id)initWithCString:(c*****t char *)nu...
    韩七夏阅读 3,739评论 2 37