小知识点-(面试)

1>while 和 do while区别

while语句是先测试条件再执行语句,条件不符后终止;

do while语句是先执行语句再测试条件,条件不符后终止,所以do while循环至少执行一次。

 

2>URL参数拼接

在URL后面拼接参数,用问号?隔开。如果有多个参数,用&隔开。

 

3>UI、ID、UE和GUI这些都是什么?

UI(User Interface)

用户界面设计,是指对应用软件的操作逻辑、人机交互、界面的整体设计。从20 世纪80 年代起,用户界面设计成为了计算机科学的正式学科。在设计理念上,UI 设计不仅是让软件变得有个性、有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。

ID(Interaction Design)

交互设计,又称互动设计,它考虑的是人、环境与设备的关系和行为,以及传达这种行为的元素的设计。这个解释有点难懂。简单地说,我们进行交互设计,就是为了让产品更易用、有效,让人使用产品时感到舒适。同时,它需要了解用户和他们的期望,了解用户在同产品交互时彼此的行为,以及"人"本身的心理和行为特点。交互设计还涉及人体工程学、心理学、生物学等多个学科,以及与多领域人员的沟通。

UE(User Experience)

用户体验设计,它要求设计师能够全面地分析和体察用户在使用某个系统时的感受。他的工作从开发的最早期开始,并贯穿始终。目的是保证用户对产品的体验有正确的预估,了解用户的真实期望和目的,并对功能核心设计进行修正,保证功能核心同人机界面之间的协调

GUI(Graphical User Interface)

图形用户界面设计,是指针对采用图形方式显示的操作环境用户接口进行设计。其实就是界面美工,只关心界面的美观和有关视觉方面的设计工作。

 

4>类别的作用及继承和类别的区别

类别:
1.在不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改
2.如果类别和原来类中的方法名产生冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级.
类别的作用:
A.将类的实现分散到多个不同文件和多个不同框架中
B.创建私有方法的前向引用
C.向对象添加非正式协议
继承:可以增加,修改或者删除方法,并且可以增加属性.
文件夹的两种方式的区别
1.实体文件夹的创建 使得目录比较明朗 并且在XCode里面.h和.m文件还有资源图分类非常明确
2.直接在目录下右键New Group创建的文件夹从目录看也很明朗 但是在Xcode文件夹里面确实非常混乱。

5.NSUInteger和NSInteger区别 

NSUInteger是无符号的即没有负数,NSInteger是有符号的

 

6.iPhone设备IMEI和IMSI,UDID

IMEI:设备的唯一串号  IMSI :手机卡的唯一串号

查看iPhone设备的UDID

1.插上iPhone设备,打开Xcode

2.点击上边菜单栏-window- devices

3.选择你的设备—identifier

 

7.Xcode中,文件名后小方框中的A(M或者C)代表的意思?

表示在版本控制中,自上一次提交以来,文件做了修改。一般只有在带有版本控制的项目代码中才会显示,也就是说你的项目使用了SVN、GIT等工具后,会在Xcode中识别出来。

/*
  'A' 新增
     'D' 删除
     'M' 修改
     'R' 替代
     'C' 冲突
     'I' 忽略
     '?' 未受控
     '!' 丢失,一般是将受控文件直接删除导致
     "M" = Locally modified
     "U" = Updated in repository
     "A" = Locally added
     "D" = Locally deleted
     "I" = Ignored
     "R" = Replaced in the repository
     “–” "=" The contents of the folder have mixed status; display the contents to see individual status
     "?" = Not under source control
     这些标记跟你使用的代码托管工具或者xcode自带的svn代码托管工具有关,怎样消除:
     1、代码中 某文件后面有 “M” 标记,表示该文件已被修改,需要 commit.
           (右键该文件 -> source control -> commit selected file...)
     2、代码中 某文件后面有 “A” 标记,表示该文件是新添加的,已受SVN管理,需要 commit.
           (右键该文件 -> source control -> commit selected file...)
     3、代码中 某文件后面有 “?” 标记,表示该文件是新添加的,并且脱离了SVN的管理,首先需要add,然后 commit.
           (右键该文件 -> source control -> Add,这样该文件的标记就变为 “A”,然后在 commit)
     4、代码中 某文件后面有 “D” 标记,表示该文件在服务器上已被删除,这时update的话,可删除本地的文件。
     5、代码中 某文件后面有 “C” 标记,表示该文件与服务器的文件冲突。
*/

 8.instancetype和id的区别

不同点:

1、instancetype 可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。

2、instancetype只能作为返回值,id可以作为参数

 

 9.推送原理

 10.通知小结

    发送通知:postNotificationName

    接收通知:两种

        *addObserver

        *addObserverForName,返回观察者,保存起来,在对象销毁的时候移除

    注意点:

        一定要移除通知

    线程问题

    监听通知代码必须在主线程

  发出通知可以在子线程,而且接收到通知调用方法也是子线程.

监听到通知就会调用

 异步:监听通知 主线程:发出通知 接收通知代码在主线程

 主线程:监听通知 异步:发出通知 接收通知代码在异步

 注意:在接收通知代码中 可以加上主队列任务

 总结:接收通知代码 由 发出通知线程决定

 

11.frame和bounds区别

// center
redView.center = self.view.center;
// size
CGRect frame = redView.frame;
frame.size = CGSizeMake(200, 200);
redView.frame = frame;
// 如果size,从frame取出来 先设置size,再设置center
// 如果size,从bounds取出来,就不用考虑center和size区别

frame:以父控件左上角为原点
bounds:以自己的左上角为原点,bounds x,y永远为0(🙅)
    
frame和bounds都是用来描述一块区域
frame:描述可视范围
 
bounds:描述可视范围在内容的区域
所有的子控件都是相对于内容
bounds:修改内容原点

相对性:可视范围相对于父控件位置永远不变
            可视范围相对于内容,位置改变

12.什么时候使用Weak和assign

 ARC:才有weak 

weak:__weak 弱指针,不会让引用计数器+1,如果指向对象被销毁,指针会自动清空

assgin:__unsafe_unretained修饰,不会让引用计数器+1,如果指向对象被销毁,指针不会清空

/*
 1.weak
 1> OC对象
 
 2.assign
 1> 基本数据类型
 2> OC对象
 
 3.strong
 1> OC对象
 
 4.copy
 1> NSString *
 2> block
 
 5.使用weak和assign修饰OC对象的区别
 1> 成员变量
 1) weak生成的成员变量是用__weak修饰的,比如XMGCat * __weak _cat;
 2) assign生成的成员变量是用__unsafe_unretained修饰的XMGCat * __unsafe_unretained _cat;

 2> __weak和__unsafe_unretained
 1) 都不是强指针(不是强引用),不能保住对象的命
 2) __weak : 所指向的对象销毁后,会自动变成nil指针(空指针),不再指向已经销毁的对象
 3) __unsafe_unretained : 所指向的对象销毁后,仍旧指向已经销毁的对象
*/

 

 13.collection View闪退

 

 14.autoreleasepool和 runloop之间的关系

 

15.僵尸对象崩溃查找

僵尸对象:已经被回收的对象,或者说对象所对应的内存地址已经不可用的对象称为僵尸对象。僵尸对象不可用

 

 

16.Ⅺib和代码的看法 

 

17.runtime相关的运作数组读取

 

18. cocopods的命令 pod install做了什么操作

 

19.持久化数据存储有哪些优缺点分别是什么

 

20. block为啥用copy实现 

 

21.UIbutton在不改变sdwebimage如何释放缓存

 

22.组件化

 

 

 

 

 

 

 

posted @ 2018-09-21 17:26  淡然微笑_Steven  阅读(193)  评论(0编辑  收藏  举报