销售面试问题题

心理导读:面试时总是紧张,不知道怎么回答面试官提出的问题?这里提供了针对面试中常见的65个问题的技巧性解答,希望能帮助你提前准备,轻松面试。——
1、请你自我介绍一下你自己?
回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”,企业喜欢有礼貌的求职者。
2、你觉得你个性上最大的优点是什么?
回答提示:沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我经过一到两年的培训及项目实战,加上实习工作,使我适合这份工作。
3、说说你最大的缺点?
回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌岌可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分,企业喜欢聪明的求职者。
4、你对加班的看法?
回答提示:实际上好多公司问这个问题,并不证明一定要加班,只是想测试你是否愿意为公司奉献。
回答样本:如果是工作需要我会义不容辞加班,我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班。
5、你对薪资的要求?
回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。
回答样本一:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。
回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。
回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。
6、在五年的时间内,你的职业规划?
回答提示:这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被问到,比较多的答案是“管理者”。但是近几年来,许多公司都已经建立了专门的技术途径。这些工作地位往往被称作“顾问”、“参议技师”或“高级软件工程师”等等。当然,说出其他一些你感兴趣的职位也是可以的,比如产品销售部经理,生产部经理等一些与你的专业有相关背景的工作。要知道,考官总是喜欢有进取心的应聘者,此时如果说“不知道”,或许就会使你丧失一个好机会。最普通的回答应该是“我准备在技术领域有所作为”或“我希望能按照公司的管理思路发展”。
7、你朋友对你的评价?
回答提示: 想从侧面了解一下你的性格及与人相处的问题。
回答样本一:我的朋友都说我是一个可以信赖的人。因为,我一旦答应别人的事情,就一定会做到。如果我做不到,我就不会轻易许诺。
回答样本二:我觉的我是一个比较随和的人,与不同的人都可以友好相处。在我与人相处时,我总是能站在别人的角度考虑问题。
8、你还有什么问题要问吗?
回答提示:企业的这个问题看上去可有可无,其实很关键,企业不喜欢说“没问题”的人,因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。
9、如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办?
回答提示:一段时间发现工作不适合我,有两种情况:①如果你确实热爱这个职业,那你就要不断学习,虚心向领导和同事学习业务知识和处事经验,了解这个职业的精神内涵和职业要求,力争减少差距;②你觉得这个职业可有可无,那还是趁早换个职业,去发现适合你的,你热爱的职业,那样你的发展前途也会大点,对单位和个人都有好处。
10、在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应该怎么做?
回答提示:①.原则上我会尊重和服从领导的工作安排,同时私底下找机会以请教的口吻,婉转地表达自己的想法,看看领导是否能改变想法。②如果领导没有采纳我的建议,我也同样会按领导的要求认真地去完成这项工作。③.还有一种情况,假如领导要求的方式违背原则,我会坚决提出反对意见,如领导仍固执己见,我会毫不犹豫地再向上级领导反映。
11、如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办?
回答提示:①我本意是为公司努力工作,如果造成经济损失,我认为首要的问题是想方设法去弥补或挽回经济损失。如果我无能力负责,希望单位帮助解决。②分清责任,各负其责,如果是我的责任,我甘愿受罚;如果是一个我负责的团队中别人的失误,也不能幸灾乐祸,作为一个团队,需要互相提携共同完成工作,安慰同事并且帮助同事查找原因总结经验。③总结经验教训,一个人的一生不可能不犯错误,重要的是能从自己的或者是别人的错误中吸取经验教训,并在今后的工作中避免发生同类的错误。检讨自己的工作方法、分析问题的深度和力度是否不够,以致出现了本可以避免的错误。
12、如果你做的一项工作受到上级领导的表扬,但你主管领导却说是他做的,你该怎样?
回答提示:我首先不会找那位上级领导说明这件事,我会主动找我的主管领导来沟通,因为沟通是解决人际关系的最好办法,但结果会有两种:①我的主管领导认识到自己的错误,我想我会视具体情况决定是否原谅他。②他更加变本加厉的来威胁我,那我会毫不犹豫地找我的上级领导反映此事,因为他这样做会造成负面影响,对今后的工作不利。
13、谈谈你对跳槽的看法?
回答提示:①正常的“跳槽”能促进人才合理流动,应该支持。②频繁的跳槽对单位和个人双方都不利,应该反对。
14、工作中你难以和同事、上司相处,你该怎么办?
回答提示:①我会服从领导的指挥,配合同事的工作。②我会从自身找原因,仔细分析是不是自己工作做得不好让领导不满意,同事看不惯。还要看看是不是为人处世方面做得不好,如果是这样的话 我会努力改正。③如果我找不到原因,我会找机会跟他们沟通,请他们指出我的不足,有问题就及时改正。④作为优秀的员工,应该时刻以大局为重,即使在一段时间内,领导和同事对我不理解,我也会做好本职工作,虚心向他们学习,我相信,他们会看见我在努力,总有一天会对我微笑的。
15、假设你在某单位工作,成绩比较突出,得到领导的肯定。但同时你发现同事们越来越孤立你,你怎么看这个问题?你准备怎么办?
回答提示:①成绩比较突出,得到领导的肯定是件好事情,以后更加努力。②检讨一下自己是不是对工作的热心度超过同事间交往的热心了,加强同事间的交往及共同的兴趣爱好。③工作中,切勿伤害别人的自尊心④不再领导前拨弄是非。
16、你最近是否参加了培训课程?谈谈培训课程的内容。是公司资助还是自费参加?
回答提示:自费参加,就是北大青鸟的培训课程(可以多谈谈自己学的技术)。
17、你对于我们公司了解多少?
回答提示:在去公司面试前上网查一下该公司主营业务。如回答:贵公司有意改变策略,加强与国外大厂的OEM合作,自有品牌的部分则透过海外经销商。
18、请说出你选择这份工作的动机?
回答提示:这是想知道面试者对这份工作的热忱及理解度,并筛选因一时兴起而来应试的人,如果是无经验者,可以强调“就算职种不同,也希望有机会发挥之前的经验”。
19、你最擅长的技术方向是什么?
回答提示:说和你要应聘的职位相关的课程,表现一下自己的热诚没有什么坏处。
20、你能为我们公司带来什么呢?
回答提示:①假如你可以的话,试着告诉他们你可以减低他们的费用——“我已经接受过北大青鸟近两年专业的培训,立刻就可以上岗工作”。② 企业很想知道未来的员工能为企业做什么,求职者应再次重复自己的优势,然后说:“就我的能力,我可以做一个优秀的员工在组织中发挥能力,给组织带来高效率和更多的收益”。企业喜欢求职者就申请的职位表明自己的能力,比如申请营销之类的职位,可以说:“我可以开发大量的新客户,同时,对老客户做更全面周到的服务,开发老客户的新需求和消费。”等等。
21、最能概括你自己的三个词是什么?
回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释,
22、你的业余爱好是什么?
回答提示:找一些富于团体合作精神的,这里有一个真实的故事:有人被否决掉,因为他的爱好是深海潜水。主考官说:因为这是一项单人活动,我不敢肯定他能否适应团体工作。
心理延伸:
聆听治愈温暖的声音!&&&
分享今天让你温暖感恩的事情!&&&
上传你最爱的照片!&&&
现实中不敢发出的声音,留在这里!&&&&
相关人气资讯 :
性格对我们的职业有怎样的影响呢?
在职场中,你有习惯性压抑自己内心真正的情绪吗?
在江湖上混,养成好习惯第一,其他就在你们各自的特质和造化了。
不错,正愁不知怎么面对面试,感谢!
说的挺好的!
缓慢的自我放纵
真对,这篇文章让我豁然开朗
哦嘞嘞 哦拉拉
为熬夜和懒惰找了一个好借口——难怪聪明人死得早
白象效应。。。
还是很对的 可以回想自己刚刚过去的高中生涯。在校五天压力山大,很有耐力。在家休息得两天。几乎都会荒废
今天,我来当小编! &
推荐职场发展:
编辑推荐:······
热门测试 :
& &All Rights Reserved. & &
登录壹心理
开始心理测试,收听FM,用心理学改变自己!
使用其它账号登录20666人阅读
通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题:
1.搞清楚touch事件的传递(事件的响应链)
事件的响应(responder chain)
只有继承了UIResponder的类才能响应touch事件,从上图的响应者链可以看出,优先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而下传递事件。直到单例UIWindow对象,最后是单例UIApplication对象以终止,UIApplication的下一个响应者是nil,已结束整个响应循环。事件在传递过程中视图可以决定是否需要对该事件进行响应。
事件分发(Event Delivery)
第一响应者(First responder)指的是当前接受触摸的响应者对象(通常是一个UIView对象),即表示当前该对象正在与用户交互,它是响应者链的开端。整个响应者链和事件分发的使命都是找出第一响应者。
UIWindow对象以消息的形式将事件发送给第一响应者,使其有机会首先处理事件。如果第一响应者没有进行处理,系统就将事件(通过消息)传递给响应者链中的下一个响应者,看看它是否可以进行处理。
iOS系统检测到手指触摸(Touch)操作时会将其打包成一个UIEvent对象,并放入当前活动Application的事件队列,单例的UIApplication会从事件队列中取出触摸事件并传递给单例的UIWindow来处理,UIWindow对象首先会使用hitTest:withEvent:方法寻找此次Touch操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图,这个过程称之为hit-test
UIWindow实例对象会首先在它的内容视图上调用hitTest:withEvent:,此方法会在其视图层级结构中的每个视图上调用pointInside:withEvent:(该方法用来判断点击事件发生的位置是否处于当前视图范围内,以确定用户是不是点击了当前视图),如果pointInside:withEvent:返回YES,则继续逐级调用,直到找到touch操作发生的位置,这个视图也就是要找的hit-test
hitTest:withEvent:方法的处理流程如下:
首先调用当前视图的pointInside:withEvent:方法判断触摸点是否在当前视图内;
若返回NO,则hitTest:withEvent:返回
若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从最顶层视图一直到到最底层视图,即从subviews数组的末尾向前遍历,直到有子视图返回非空对象或者全部子视图遍历完毕;
若第一次有子视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束;
如所有子视图都返回非,则hitTest:withEvent:方法返回自身(self)。
2.fame,bounds,center,alpha,opaque,hidden
这些都是view的一些基本属性。frame是描述该view在其父视图中的一块区域。其坐标系是在其父视图中的坐标。我们在进行view的初始化时会经常使用到frame。bounds也是描述该view的大小,是其在自身的坐标系中的位置大小。center是描述其在父视图的中心位置坐标。我们在进行view的位置改变而不改变view的大小的时,会使用center。alpha是用来描述改view的透明度从0到1,0表示的是透明,1表示不透明。alpha支持动画(animation),alpha
= 0 与 hidden = YES 效果一样都是看不到view,但是后者相比开销大。在alpha等于0时view接受touch事件,但是hidden则不接受。并且hidden和apaque 不支持动画。alpha并不影响镶嵌在其内部view行为,而hidden会影响。当把view设置为透明背景时,一般把opaque设置为NO,可以减少开销,优化内存.opaque影响图形绘制系统。设置为YES,会优化view的绘制。
3,nil,NSNULL,NULL区别
nil是指向obj-c中对象的空指针,是一个对象,在o-c中ni对象调用方法不会引起crash。
Nil是指向obj-c中的类的空指针,表示的是一个空类。
NULL是指向任何类型的空指针(如c/c++中的空指针),在objective-c中是一个数值。
NSNULL用于集合操作,在集合对象中,表示一个空值的集合对象。
4.KVC and KVO
KVC(key-value-coding)键值编码,是一种间接操作对象属性的一种机制,可以给属性设置值。通过setValue:forKey:和valueForKey,实现对属性的存取和访问。
KVO(key-value-observing)键值观察,是一种使用观察者模式来观察属性的变化以便通知注册的观察者。通过注册observing对象addObserver:forKeyPath:options:context:和观察者类必须重写方法&observeValueForKeyPath:ofObject:change:context:。常应用MVC模型中,数据库(dataModal)发生变化时,引起view改变。
5.NSThread,NSOperation,GCD
NSThread,NSOperation,GCD是IOS中使用多线程的三种方式之一。他们各有优缺点。抽象层次是从低到高的,抽象度越高的使用越简单。
NSThread,缺点:需要自己维护线程的生命周期和线程的同步和互斥,但是这些都需要耗费系统的资源。优点:比其它两个更轻。
NSOperation,优点:不需要自己管理线程的生命周期和线程的同步和互斥等。只是需要关注自己的业务逻辑处理,需要和NSOperationQueue一起使用。
GCD,是Apple开发的一个多核编程解决方法,优点:比前面两者更高效更强大。
6.autorelease ,ARC 和非ARC
autorelease 自动释放,与之相关联的是一个自动释放池(NSAutoReleasePool).autorelease的变量会被放入自动释放池中。等到自动释放池释放时(drain)时,自动释放池中的自动释放变量会随之释放。ios系统应用程序在创建是有一个默认的NSAutoReleasePool,程序退出时会被销毁。但是对于每一个RunLoop,系统会隐含创建一个AutoReleasePool,所有的release pool会构成一个栈式结构,每一个RunLoop结束,当前栈顶的pool会被销毁。
ARC,自动应用计数。(iOS 6加入)IOS内存管理是基于变量的应用计数的。这样系统帮你管理变量的release,retain等操作。
非ARC,非自动应用计数。手动管理内存。自己负责系统变量的release,retain等操作。做到谁分配谁释放,及alloc和release像对应。函数返回对象时使用autorelease。
可以使用Xcode将非ARC转化为ARC,ARC和非ARC混编。可在在编译ARC时使用-fno-objc-arc,-fobjc-arc
7.xib,storyboard,手动书写代码
xib(interface buider),方便对界面进行编辑。可以在窗口上面直接添加各种视图,优点:直接看到界面的效果,操作简单。缺点:不方便对视图进行动态控制,不灵活。
手动编写代码,继承(主要是UIView,UIViewController),优点:可以对视图进行定制,灵活控制方便。缺点:不能马上看到效果,复杂。
storyboard(故事板在ios6加入)。优点:可以看到界面效果,能同时进行多个界面的交互,高效快速。缺点:不能进行进行界面的定制,却笑灵活性。
xib和storyboard主要用于界面中的元素位置固定和清楚里面有哪些元素。但是如果需要动态变化界面还是手动编写代码比较好。一般还是各种方式混合使用。
8.loadView,viewDidLoad,ViewDidUnload,viewWillAppear,viewDidAppear,viewwilldDisappear,viewDidDisappear
当view的nib文件为nil时,手动创建界面时调用loadView,当view的nib文件存在时,会在viewDidLoad中实现。但是当你的程序运行期间内存不足时,视图控制器收到didReceiveMemoryWarning时,系统会检查当前的视图控制器的view是否还在使用,如果不在,这个view会被release,再次调用loadView来创建一个新的View。viewDidLoad
,不论是从xib中加载视图,还是从loadview生成视图,都会被调用。但是如果改view在栈中下一次显示是不会被调用。ViewWillAppear,ViewDidAppear会在view每次即将可见和完全显示时都会调用。我们会在ViewWillAppear里面进行一些view显示的准备工作,ViewDidDi sappear 和ViewWillDisAppear时会在view每次消失时都会调用。当系统收到didReceiveMemoryWarning通知时显示内存不足时,会调用ViewDidUnload来清理View中的数据和release后置为nil。
9,copy 和retain区别
retain,相当于指针拷贝。变量的引用计数加一。另外一个指针也指向改地址。
copy,相当于内容拷贝。变量的引用计数加一。但是自己本身计数不变。开辟另外一个地址空间放入相同变量的值进去。
10,手动写setter和getter方法
- (void) setOldValue: (NSString*) newValue {
& &&if&(newValue !=oldValue) {
& & & & [oldValue&release];
& & & & oldValue = [newValue&retain];
11,NSRunLoop 和NSOperationQueue
NSRunLoop 是所有要监视的输入源和定时源以及要通知的注册观察者的集合.用来处理诸如鼠标,键盘事件等的输入源。每一个线程拥有自己的RunLoop有系统自动创建。你不应该自己去创建,只能获取。一般不会用NSRunLoop,因为它不是线程安全的。一般都用CFRunLoop,这个是线程安全的,是一种消息处理模式,我们一般不用进行处理。
NSOperationQueue时一个管理NSOperation的队列。我们会把NSOperation放入queue中进行管理。
12,IOS常用的设计模式
单例模式,DeafutCenter,Deafultqueue等
MVC模式,View,model,ViewController。
观察者模式,通知,KVO
工厂模式,
代理模式,delegate
13.内存管理和优化
1.1&&&&谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用release或autorelease。换句话说,不是你创建的,就不用你去释放。
例如,你在一个函数中alloc生成了一个对象,且这个对象只在这个函数中被使用,那么你必须在这个函数中调用release或autorelease。如果你在一个class的某个方法中alloc一个成员对象,且没有调用autorelease,那么你需要在这个类的dealloc方法中调用release;如果调用了autorelease,那么在dealloc方法中什么都不需要做。
1.2&&除了alloc、new或copy之外的方法创建的对象都被声明了autorelease。
1.3&&谁retain,谁release。只要你调用了retain,无论这个对象是如何生成的,你都要调用release。有时候你的代码中明明没有retain,可是系统会在默认实现中加入retain。
在收到内存didReceiveMemoryWarning的警告时,释放掉一些不再需要的资源,注意编码规范,如一些变量不使用需要及时的释放。避免是占用太多的内存空间,有时需要用空间去换取时间,尽量使用一些高效的算法和数据结构节约内存空间。最后使用一些内存检测工具和代码的静态分析查找内存泄漏和分配(instrument,leaks,allocations)。
14,tableview的优化
1.1 正确的复用cell。
1.2 减少在返回每个cell里面的处理逻辑和处理时间。尽量将数据进行缓存和复用。
1.3,尽量减少处理加载和计算的时间,不阻塞UI线程。
1.4,尽量使用绘制每个cell。
1.5,设置每个cell的opaque属性。
1.6,尽量返回每行固定的height。
1.7,在每个cell减少图形效果。
1.8,分段加载数据。
15,opengl,quatarz 2d
上面2种方式是进行图形绘制会使用到的技术。
quatarz 2d 是Apple提供的基于Core graphic的绘制基本图形工具库。操作简单方便,能够满足大部分需要。只是适用于2D图形的绘制。
opengl,是一个跨平台的图形开发库。适用于2D和3D图形的绘制。功能强大但是复杂。
16, animation
IOS提供丰富的Core Animation动画满足用户的需要,主要实现方式如下3种:
1.1 &commitAnimations方式使用UIView动画
UIView Animations 动画:&
[UIView beginAnimations:@&animationID& context:nil];&
[UIView setAnimationDuration:0.5f];&
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];&
[UIView setAnimationRepeatAutoreverses:NO];&
//以下四种效果&
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];//oglFlip, fromLeft&
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];//oglFlip, fromRight&&
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];&
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];&
//你自己的操作
[UIView commitAnimations];
1.2、CATransition
& &&CATransition *animation = [CATransitionanimation];
& & animation.duration = 0.5f;
& & animation.timingFunction =UIViewAnimationCurveEaseInOut;
& & animation.fillMode =
kCAFillModeForwards;
& & animation.type =
kCATransitionMoveIn;
& & animation.subtype =
kCATransitionFromTop;
& & [self.window.layeraddAnimation:animationforKey:@&animation&];
& &//自己的操作
1.3、UIView
animateWithDuration
+(void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))&
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished)) //多一个动画结束后可以执行的操作.&
[UIView animateWithDuration:1.25 animations:^{&
CGAffineTransform newTransform = CGAffineTransformMakeScale(1.2, 1.2);&
[firstImageView setTransform:newTransform];&
[secondImageView setTransform:newTransform];}&
completion:^(BOOL finished){&
[UIView animateWithDuration:1.2 animations:^{&
//自己的操作} completion:^(BOOL finished){ 自己的操作}];&
17,定制化view&
需要自己自己继承自cocoa touch提供的丰富的类。如(UIView,UiScrollView,UITableView等等)。需要重载实现drawRect,touch事件,init,initFrame等方法。
18.core Data,sqlite,file,NSUserDefaults
上面四种是IOS中数据存取的方式。
Core Data,sqlite涉及到数据库。sqlite需要通过sqlite语句操作数据库,而core data是Apple提供的一个基于sqlite更抽象成对象的一种对数据库操作方式。
file,主要是把数据存储在磁盘中。通过写和读文件操作。
NSUserDefaults,主要是存储应用程序中的一些轻量级数据如应用程序的设置和属性和用户信息等。
19.机型和尺寸的适配
Iphone 的主要尺寸是3.5和4英寸。分辨率为:320*480,480*960(retina)。
IPad 主要尺寸是7.9和9.7英寸。分辨率为:48*1536(retina)。
20.添加手势的方式(gesture和touches事件)
1.自己重载实现touchMoved,touchBegin,touchEnd,touchCanceled事件。
2.通过UIGestureRecongnizer添加AddGestureRecognier事件。该方式方便添加一些诸如点击,双击,拖动等基本的手势事件。
21.应用程序的生命周期和状态(参照:)
Not running &未运行 &程序没启动
Inactive & & & & &未激活 & & & &程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态
Active & & & & & & 激活 & & & & & 程序在前台运行而且接收到了事件。这也是前台的一个正常的模式
Backgroud & & 后台 & & & & & 程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。时间到之后会进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态
Suspended & &挂起 & & & & & 程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。
下图是程序状态变化图:
各个程序运行状态时代理的回调:
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
& & & 告诉代理进程启动但还没进入状态保存
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
& & &告诉代理启动基本完成程序准备开始运行
- (void)applicationWillResignActive:(UIApplication *)application
& & 当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了
- (void)applicationDidBecomeActive:(UIApplication *)application&
& & &当应用程序入活动状态执行,这个刚好跟上面那个方法相反
- (void)applicationDidEnterBackground:(UIApplication *)application
& & 当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可
- (void)applicationWillEnterForeground:(UIApplication *)application
当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。
- (void)applicationWillTerminate:(UIApplication *)application
当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。
- (void)applicationDidFinishLaunching:(UIApplication*)application
当程序载入后执行
加载应用程序进入前台
加载应用程序进入后台
22.block编程
Block 是一种具有匿名功能的内嵌函数块。Block
一般是用来表示、简化一小段的程式码,它特别适合用来建立一些同步执行的程式片段、封装一些小型的工作或是用来做为某一个工作完成时的回传呼叫(callback) 。格式如下:^(传入参数列)
{行为主体};
23.常用的开源框架
网络框架:ASIHttpRequest,AFNetworking,coocaHttpServer等。
进度条:SVprogressHUD,MBprogressHUD,
工具类:SSToolKit等。
分享类:ShareKit等
日志框架:log4j,cocoa lumberJack&等。
24.通知消息和代理的区别
通知:分为本地和远程通知。接受通知的接受者需要进行注册改通知。这样通知被NSNotificationCenter发送出来后会被注册的接受者所接受。远程通知需要借助苹果的服务器去实现通知的中转。
代理:把某个对象要做的事情委托给别的对象去做。
两者区别:
delegate针对one-to-one关系,用于sender接受到reciever的某个功能反馈值。
notification针对one-to-one/many/none,reciver,用于通知多个object某个事件,sender只是负责把notification发送出去。
25.数据解析(json和XML)
json数据的解析通常借助一些开源的框架如:SBJson,TouchJson,jsonKit,Apple 提供的原生的JSon解析 NSJSON Serialization等。去json数据转化为IOS中常用的字典等。
XML数据的解析。xml分为SAX和DOM两种解析方式。
DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树结构可以检索任意XML节点,读取它的属性和值。而且通常情况下,可以借助XPath,直接查询XML节点。
SAX解析XML,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理。
一般在iOS平台下,比较常用的XML解析类库有如下几种:
NSXMLParser,,这是一个SAX方式解析XML的类库,默认包含在iOS SDK中,使用也比较简单。
libxml2,是一套默认包含在iOS SDK中的开源类库,它是基于C语言的API,所以使用起来可能不如NSXML方便。这套类库同时支持DOM和SAX解析,libxml2的SAX解析方式还是非常酷的,因为它可以边读取边解析,尤其是在从网上下载一个很大的XML文件,就可以一边下载一边对已经下载好的内容进行解析,极大的提高解析效率。
TBXML,这是一套轻量级的DOM方式的XML解析类库,有很好的性能和低内存占用,不过它不对XML格式进行校验,不支持XPath,并且只支持解析,不支持对XML进行修改。
TouchXML,这也是一套DOM方式的XML解析类库,支持XPath,不支持XML的修改。
KissXML,这是一套基于TouchXML的XML解析类库,和TouchXML相比,支持了XML的修改。
TinyXML,这是一套小巧的基于C语言的DOM方式进行XML解析的类库,支持对XML的读取和修改,不直接支持XPath,需要借助另一个相关的类库TinyXPath才可以支持XPath。
GDataXML,这是一套Google开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询。
26.webservice
Web service是一个独立的,的,自包含的、基于可的web的应用程序,可使用开放的XML来、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的。技术支持包含如下:
1.1 xml 和xsd
1.5调用RPC和消息传递
27.开发App的步骤,开发者账号,发布app到appstore
&&证书分两种:开发者证书、发布者证书。前者开发时使用,后者发布使用&
(1)&模拟器调试无需代码签名;真机调试需开发者证书代码签名;发布时需发布证书签名&
(2)&代码签名需要:证书+私钥,
(3)&真机调试时要求在设备上安装描述文件(provision&profile),该文件包含信息:调试者证书,
授权调试设备清单,应用ID。一个应用对应一个描述文件。
28.类继承,类的扩展(extension),类别(category)
category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。
并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。
类别主要有3个作用:
(1)将类的实现分散到多个不同文件或多个不同框架中。
(2)创建对私有方法的前向引用。
(3)向对象添加非正式协议。
&继承可以增加,修改或者删除方法,并且可以增加属性。
category和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。
extensions可以认为是一个私有的Category。
29.CAlayer介绍
一个UIView包含CALayer树,CALayer是一个数据模型。包含了一些用来显示的对象,在UIView的子类中都可以找到层这个组件,层是位于固定的画布上的一个子片,可以被覆盖。层是彼此堆叠在一起的最终产生一个界面。除此之层可以包含多个层,通过层可以操作位于此层上面的其他内容,例如旋转,动画,翻页等。
30.ios 怎么实现多继承
IOS通过实现protocol委托代理,实现多个接口来实现多继承。
31.app性能测试方式
通过Xcode提供的工具如Instrument,测试CPU,Mermory性能。也可以适用一些开源的自动化测试工具:如Frank,KIF等。
32.NSArray可以放基本数据类型不(int,float,nil)怎么放进一个结构体
NSArray 只能存放objective-c对象数据模型,这些基本数据类型需要先转化为NSNumber对象再存放进数组中。
33.objective-c和c,c++混合编写
在 Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。在这两种语言里对象都是指针,可以在任何地方使用。例 如,C++类可以使用Objective-C对象的指针作为数据成员,Objective-C类也可以有C++对象指针做实例变量。Xcode需要源文件以&.mm&为扩展名,这样才能启动编译器的Objective-C++扩展。
34.常见的语言编码(utf-8,unicode,gb2312,gbk)
常见的语言编码有:
GB2312:简体中文编码,一个汉字占用2字节,在大陆是主要编码方式。
BIG5:繁体中文编码。主要在台湾地区采用。
GBK:支持简体及繁体中文,但对他国非拉丁字母语言还是有问题。
UTF-8:Unicode编码的一种。Unicode用一些基本的保留字符制定了三套编码方式,它们分别UTF-8,UTF-16和UTF-32。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分。UTF-8俗称“万国码”,可以同屏显示多语种,一个汉字占用3字节。为了做到国际化,网页应尽可能采用UTF-8编码。
当然,处理中文时http头也要改成UTF-8编码的-----加上&meta http-equiv=&Content-Type& content=&text/ charset=utf-8&&。
语言&&&&&&&&&&&&&&&&&&&&&&&&&&&&
字符集&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 正式名称
英语、西欧语&&&&&&&&&&&&&&& ASCII,ISO-8859-1&&&&&&& MBCS多字节
简体中文&&&&&&&&&&&&&&&&&&&&& GB2312&&&&&&&&&&&&&&&&&&&&&&&&& MBCS多字节
繁体中文&&&&&&&&&&&&&&&&&&&&& BIG5&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &MBCS多字节
简繁中文&&&&&&&&&&&&&&&&&&&& &GBK&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &MBCS多字节
中文、日文及朝鲜语&&&&&& GB18030&&&&&&&&&&&&&&&&&&&&&&& MBCS多字节
各国语言&&&&&&&&&&&&&&&&&&&&& UNICODE,UCS&&&&&&&&&&&&& DBCS宽字节
35.常见的加解密方式(rsa,aes,md5)
常见的加解密方式有:
RSA:基于公钥和私钥的非对程加密算法。适用范围广。
AES:是一种对程加密的流行方式。加密涉及矩阵运算。
MD5:将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,
36.objective-c语言的优缺点
objc优点:
1) Cateogies
3) 动态识别
4) 指标计算
5)弹性讯息传递
6) 不是一个过度复杂的 C 衍生语言
7) Objective-C 与 C++ 可混合编程
1) 不支援命名空間
2)& 不支持运算符重载
3) 不支持多重继承
4) 使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。
37,ios应用的调试技巧
1.如遇到crash,分析崩溃日志(symbolicatedrash工具的适用)保留崩溃版本的.dSYM文件
2.在 XCode 中进入断点管理窗口;然后点击右下方的 +,增加新的 Exception Breakpoint。
3.如遇到EXC_BAD_ACCESS,打开Scheme选项选择EditScheme。然后按图勾上Enable
Zombie Objects和Malloc Stack那两项。
4.有效的日志管理。NSLog和加入一些开源的日志管理框架。
5.程序断点debug模式。
38,应用程序性能的调优(转)
1.&用ARC去管理内存(Use ARC to Manage Memory)
& &2.适当的地方使用reuseIdentifier(Use a&reuseIdentifier&Where Appropriate)
& &3.尽可能设置视图为不透明(Set View as Opaque When Possible)
& &4.避免臃肿的XIBs文件(Avoid Fat XiBs)
& &5.不要阻塞主进程(Don't Block the Main Thread)
& &6.调整图像视图中的图像尺寸(Size Images to Image Views)
& &7.选择正确集合(Choose the Correct Collection)
& &8.启用Gzip压缩(Enable GZIP Compression)
& & 9. 重用和延迟加载视图(Reuse and Lazy Load Views)
& &10.缓存,缓存,缓存(Cache,Cache,Cache)
& &11.考虑绘图(Consider Drawing)
& &12.处理内存警告(Handle Memory Warnings)
& &13.重用大开销对象(Reuse Expensive Objects)
& &14.使用精灵表(Use Sprite Sheets&)
& &15.避免重复处理数据(Avoid Re-Processing Data)
& &16.选择正确的数据格式(Choose the Right Data Format)
& &17.适当的设置背景图片(Set &Background Images Appropriately)
& &18.减少你的网络占用(Reduce Your Web Footprint) &
& &19.设置阴影路径(Set the Shadow Path&)
& &20.你的表格视图Optimize Your Table Views)
& &21.选择正确的数据存储方式(Choose Correct Data Storage Option)
& &22.加速启动时间(Speed up Launch Time&)
& &23.使用自动释放池(Use AutoRelease Pool)
& &24.缓存图像(Cache Images-Or not&)
& &25.尽可能避免日期格式化器(Avoid Date Formatters Where Possible)
39.UIScrollView 的contentSize、contentOffSet和contentInset属性的区别
contentSize表示UIScrollView滚动区域的大小。UIScrollView的frame属性在设置好了以后不会随内容的变化而变化。
contentOffSet表示是UIScrollView当前显示区域顶点相对于frame顶点的偏移量,一般用来设置UIScrollView显示的位置。
contentInset表示是scrollview的contentView的顶点相对于scrollview的位置,假设你的contentInset
= (0 ,100),那么你的contentView就是从scrollview的(0 ,100)开始显示。一般都是(0,0)表示从scrollView的开始显示。
40.IOS6 AutoLayout
AutoLayout是IOS6之后引进的自动布局功能,有点类型有android的相对布局属性。通过勾选AutoLayout设置各种Constraint约束来实现在不同设备和不同方向上的自动布局。autosizing
mask也就是&“springs and struts” 模式。autosizing mask决定了一个view会发生什么当它的superview 改变大小的时候。而autolayout 不仅可以设置superview改变时view所做的变化,还支持当相邻view变化时自己所做的变化。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:85412次
积分:1106
积分:1106
排名:千里之外
原创:28篇
转载:21篇
评论:13条
(2)(2)(3)(4)(1)(1)(3)(1)(1)(3)(3)(2)(4)(2)(7)(3)(7)(1)

我要回帖

更多关于 面试题 的文章

 

随机推荐