1.手写冒泡跟插入排序

冒泡排序来源于生活常识,相当于把数组竖起来,轻的向上,重的向下。
void bubbleSort(int[] unsorted)
{
for (int i = ; i < unsorted.Length; i++)
{
for (int j = i; j < unsorted.Length; j++)
{
if (unsorted[i] > unsorted[j]) {
int temp = unsorted[i];
unsorted[i] = unsorted[j];
unsorted[j] = temp;
}
}
}
}
插入排序,有点类似打斗地主时候摸牌配顺子,345678910JQKA,先抽到3,5又抽到4就把4插在3,5之间。
void insertSort(int *a,int n)
{
int i,j,key; // 控制需要插入的元素
for (i = ; i < n; i++)
{
// key为要插入的元素
key = a[i];
// 查找要插入的位置,循环结束,则找到插入位置
for (j = i; j > && a[j-] > key; j--)
{
// 移动元素的位置,供要插入元素使用
a[j] = a[j-];
} // 插入需要插入的元素
a[j] = key;
}
}

2.重写setter/getter方法

 假设声明属性
@property (nonatomic, copy) NSString *imageName;
这里一旦连setter,getter方法都重写,编译器不会给我们自动生成成员变量_imageName,因此我们需要在类的声明中添加一个成员变量_ImageName:
@interface Demo () {
NSString *_imageName;
}
@end
一,ARC中
- (void)setImageName:(NSString *)aName {
if (_imageName != aName) {
_imageName = nil;
_imageName = [aName copy];
}
}
- (NSString *)imageName {
return _imageName;
}
二,MRC中
- (void)setImageName:(NSString *)aName {
if (_imageName != aName) {
[_imageName release];
_imageName = nil;
_imageName = [aName copy];
}
}
- (NSString *)imageName {
return _imageName;

3.手写简单的单例

+ (instancetype)shared {
static XNGUserManager *sg_userManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (sg_userManager == nil) {
sg_userManager = [[XNGUserManager alloc] init];
}
}); return sg_userManager;
}

4.谈谈iOS中的通知

一,获取通知对象:
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
二,通知对象的三个属性
@property (readonly, copy) NSString *name;//通知的名称
@property (nullable, readonly, retain) id object;//通知的发布者
@property (nullable, readonly, copy) NSDictionary *userInfo;//额外的信息,可以储存一些数据
三,通知对象的初始方法
- (instancetype)initWithName:(NSString *)name
object:(nullable id)object
userInfo:(nullable NSDictionary *)userInfo;
+ (instancetype)notificationWithName:(NSString *)aName
object:(nullable id)anObject;
+ (instancetype)notificationWithName:(NSString *)aName
object:(nullable id)anObject
userInfo:(nullable NSDictionary *)aUserInfo;
四,发布通知的三种方法
- (void)postNotification:(NSNotification *)notification;
- (void)postNotificationName:(NSString *)aName
object:(nullable id)anObject;
- (void)postNotificationName:(NSString *)aName
object:(nullable id)anObject
userInfo:(nullable NSDictionary *)aUserInfo;

五,注册通知
- (void)addObserver:(id)observer
selector:(SEL)aSelector
name:(nullable NSString *)aName
object:(nullable id)anObject; - (id <NSObject>)addObserverForName:(nullable NSString *)name
object:(nullable id)obj
queue:(nullable NSOperationQueue *)queue
usingBlock:(void (^)(NSNotification *note))block
六,取消注册通知
- (void)removeObserver:(id)observer; - (void)removeObserver:(id)observer
name:(nullable NSString *)aName
object:(nullable id)anObject;
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

5.UIView与CLayer有何区别

).UIView 是 iOS 系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由 CoreAnimation 来实现的。
它真正的绘图部分,是由一个 CALayer 类来管理。 UIView 本身更像是一个 CALayer 的管理器,访问它的跟绘图和跟坐标有关的属性。 ).UIView 有个重要属性 layer ,可以返回它的主 CALayer 实例。 ).UIView 的 CALayer 类似 UIView 的子 View 树形结构,也可以向它的 layer 上添加子layer ,来完成某些特殊的表示。
即 CALayer 层是可以嵌套的。 ).UIView 的 layer 树形在系统内部,被维护着三份 copy 。分别是逻辑树,这里是代码可以操纵的;
动画树,是一个中间层,系统就在这一层上更改属性,进行各种渲染操作;显示树,其内容就是当前正被显示在屏幕上得内容。 ).动画的运作:对 UIView 的 subLayer (非主 Layer )属性进行更改,系统将自动进行动画生成,动画持续时间的缺省值似乎是 0.5 秒。 ).坐标系统: CALayer 的坐标系统比 UIView 多了一个 anchorPoint 属性,使用CGPoint 结构表示,值域是 ~ ,是个比例值。
这个点是各种图形变换的坐标原点,同时会更改 layer 的 position 的位置,它的缺省值是 {0.5,0.5} ,即在 layer 的中央。 ).渲染:当更新层,改变不能立即显示在屏幕上。当所有的层都准备好时,可以调用setNeedsDisplay 方法来重绘显示。 ).变换:要在一个层中添加一个 3D 或仿射变换,可以分别设置层的 transform 或affineTransform 属性。 ).变形: Quartz Core 的渲染能力,使二维图像可以被自由操纵,就好像是三维的。
图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾斜。 CATransform3D 的一套方法提供了一些魔术般的变换效果。

iOS开发工程师面试题(二)的更多相关文章

  1. iOS开发工程师笔试题

    iOS开发工程师笔试题 1.   Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? Object-c的类不可以多重继承:可以 ...

  2. iOS开发工程师面试题(一)

    SDWEBImge原理 一,先上标答 1)UIImageView+WebCache:  setImageWithURL:placeholderImage:options: 先显示 placeholde ...

  3. iOS之2016面试题二

    前言 招聘高峰期来了,大家都非常积极地准备着跳槽,那么去一家公司面试就会有一堆新鲜的问题,可能不会,也可能会,但是了解不够深.本篇文章为群里的小伙伴们去要出发公司的笔试题,由笔者整理并提供笔者个人参考 ...

  4. Web前端开发工程师面试题

    Web前端开发工程师面试题1.说说css的优先级?2.在移动端中,常常使用tap作为点击事件,好处是?会带来什么问题?3.原生JS的window,onload与Jquery的$(document).r ...

  5. 来自IOS开发工程师的零基础自学HTML5经验分享

    移动互联网的火爆,而Html具有跨平台.开发快的优势,越来越受到开发者的青睐.感谢IOS开发工程师“小木___Boy”’带来的HTML5学习经验分享. 一.学习途径 1.很多视频网站 比如慕课.和极客 ...

  6. 珍藏版 Python 开发工程师面试试题

    珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...

  7. python后端开发工程师考证试题

    python开发工程师考证试题 问答题链接 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的“ ...

  8. 复盘鼎甲科技2020web开发工程师-笔试题(校招)

    复盘鼎甲科技2020web开发工程师-笔试题(校招) 本试卷以W3C规范为准,JavaScript使用ES5标准,除特别说明外,不考虑各个浏览器之间差异. 一.多项选择题 以下标签是行内元素(inli ...

  9. iOS开发Swift篇—(二)变量和常量

    iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...

随机推荐

  1. 10年C#历程的MVP之路与MVP项目介绍

            本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html  1.意外的惊喜 10月份收到微软总部寄来的荣誉证书,非常激动, ...

  2. Android okHttp网络请求之文件上传下载

    前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...

  3. [c++] Smart Pointers

    内存管理方面的知识 基础实例: #include <iostream> #include <stack> #include <memory> using names ...

  4. php这是一个随机打印输出字符串的例子

    <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); define(& ...

  5. 用CSS制作带图标的按钮

    先上一张效果图

  6. JS函数相关及递归函数的使用

    JS函数相关及递归函数的使用 通用js程序: function 函数名(参数列表) { 函数体 } 可使用alert()输出,也可用return返回值. alert与return区别: functio ...

  7. 微信小程序探究

    前段时间比较流行的微信小程序,因为一直没有所谓内测码也没具体关注.拖到现在正好借组内分享的时机来仔细了解一下微信小程序.了解一个新的事物无外乎从是什么(本质),怎么用(具体用法),为什么用(优缺点)来 ...

  8. 教你快速高效接入SDK——服务器端支付回调的处理方式

    转载自:http://blog.csdn.net/chenjie19891104/article/details/48321427今天着重把之前渠道服务器端SDK的时候,遇到的一个蛋疼的问题给解决了. ...

  9. Android PopupWindow怎么合理控制弹出位置(showAtLocation)

    说到PopupWindow,应该都会有种熟悉的感觉,使用起来也很简单 // 一个自定义的布局,作为显示的内容 Context context = null; // 真实环境中要赋值 int layou ...

  10. 2014/11/06 Oracle触发器初步 2014-11-06 09:03 49人阅读 评论(0) 收藏

    触发器我就不多解释了,保证数据的完整性的神器,嗯..也是减少程序员工作托管给数据库操作的好帮手.就不讲一些大道理了.通俗点,我们对数据库的操作,无非就是增 删 改 查. 触发器就是在删,改,增的时候( ...