iOS找工作心得

大江东去

天下大势,合久必分,分久必合,如今这iOS的行情就是从波峰到波谷,从波谷又趋于稳定,最近小编因为任性离职了,找了两个星期的工作,颇有一番心得,希望与诸君共勉,一起度过这互联网的寒冬期,走向人生巅峰!

从目前iOS目前形势来看,相对去年略有回暖,最近面试,基本上每天两三家,从数量上看,还是可观的,但是这并不意味工作好找,现在找工作难度不断上涨,市场注定会淘汰一批浑水摸鱼之辈,你是否是其中的一个,那就要问苍天了!

既然选择了这个行业,再没有转行或者单飞之前,那就好好坚持下去,没事多啃啃博客,没事多敲敲代码,该熬夜还得熬夜,该加班还得加班,不要拿健康,生命第一

去第一家公司面试,毫无准备就去了,结果是碰了一鼻子灰,当初以为面试官问的问题问得很难,但是现在想来,也属于一个常问的面试题,多线程的用法

当a,b,c,d四个线程,a,b,c执行完的结果,将作为d的一个参数传入,怎么实现? (个人觉得这个问题这是一个道非常好的面试题,但是小编没有答上来,很是尴尬)

如果你说出了dispatch_group,或者队列组这个两个关键词,那恭喜你答对了,下面是示例代码。

/**

*  使用dispatch_group,异步多请求

*/

- (void)asyncBaseData

{

// 全局并行队列

dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);

// 创建一个group

dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group, globalQueue, ^{

// 执行请求1... (这里的代码需要时同步执行才能达到效果)

});

dispatch_group_async(group, globalQueue, ^{

// 执行请求2...

});

dispatch_group_async(group, globalQueue, ^{

// 执行请求N...

});

dispatch_group_notify(group, dispatch_get_main_queue(), ^{

NSLog(@"全部请求执行完毕!");

});

}

延着这个问题基本上每个面试官都会多线程的几种创建方式,和优缺点,这个问题必须要答对,不然面试基本可以宣布阵亡了!

ios三种多线程技术:

1.NSThread

(1)使用NSThread对象建立一个线程非常方便

(2)但是!要使用NSThread管理多个线程非常困难,不推荐使用

(3)技巧!使用[NSThread currentThread]跟踪任务所在线程,适用于这三种技术

2.NSOperation/NSOperationQueue

(1)是使用GCD实现的一套Objective-C的API

(2)是面向对象的线程技术

(3)提供了一些在GCD中不容易实现的特性,如:限制最大并发数量、操作之间的依赖关系

3.GCD —— Grand Central Dispatch

(1)是基于C语言的底层API

(2)用Block定义任务,使用起来非常灵活便捷

(3)提供了更多的控制能力以及操作队列中所不能使用的底层函数

第二种问题关于runtime的问题,也是面试官喜欢问的,虽然工作中可能不常用,但是面试很喜欢问,后来我发现runtime是OC的灵魂,runtime如果用得好,将会起到一劳永逸的效果。

面试官基本会问两个问题,

什么是runtime

我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(target, @selector(doSomething));

你用过runtime的哪些方法,能说下他们的应用场景吗?

这是一个见仁见智的问题,你可以说你使用过runtime的哪些方法,比如归档中,每个去归档和反归档,显得步骤很重复,属性很多的时候就是一些体力活了,如果用runtime去遍历模型中的属性,可以起到一劳永逸。

还有比如说,判断某个对象是不是某个类[object isKindOfClass:[NSObject class]],这些都是runtime,举一些你真实在项目中用过的场景,然后你可以其他的方法,也有了解过,只是不常用而已,比如说,交换方法,动态加载方法,消息转发,动态关联属性。

总之,你一定要列举你们项目中真实的应用场景,随后列举其他的一些方法,这样可以突出你对此次面试准备很充足,也很真实。

MVC与MVVM,MVP设计模式的区别?

一般面试官问我这个问题,我一般都是简单描述下MVC,然后我会说所谓MVVM,MVP都只是MVC的一个变种,延伸,多了个VM,P层,本质讲,跟MVC没什么区别,只是VM,P层,帮助C分担了一些处理事件的压力,相当于说一些代码转移到VM,P层去处理。个人觉得一般面试回答到这个份上,一般面试官都会点头认可的。

但是有一家面试,问我有没有使用过MVVM,可以举一些例子吗,你怎么设计MVVM的,当时小编就很懵逼了,后来我问了下面试官,面试官说这个跟响应式编程有关系的,我回去查了下响应式编程,这是一个比较大的话题,如果你会你可以跟面试官吹吹牛,不会的话那你可以说下场面话,这个问题暂时没有涉猎到,回去我去查查。这样可以显得你是有求知欲的人。

这个问题问完,一般会问你用过哪些设计模式?

这个问题,个人觉得得看面试官的角色,如果面试官不是iOS开发面试,那么这个问题,你可以答得越详细越好,比如你用过哪些设计模式,在项目中应用场景,这个问题小编觉得是一个比较简单的问题了,如果这个问题答不好,那么你可能就需要去黑木崖面壁思过了!

不过昨天念念信息面试,面试官问到工厂模式,这个倒是有点出乎我的意料,后来我去查了下,发现工厂模式还是有必要去好哈掌握下。

OS中工厂模式我的理解是:利用OC语言的特性“多态”来创建不同的对象

如果后台提供的一个接口中有两至三种不同的数据,比如说有些是新闻,有些是图片,有些是音乐,那么该如非常方便的去使用这些数据在页面上展示出来呢?

在这里举个简单的例子:

先创建一个BaseModel,然后再News,Music,Images继承于BaseModel,然后在BaseModel中写一个便利构造器:

//创建一个便利构造器+ (instancetype)initWithDictionary:(NSDictionary*)dictionary;

// 根据字典内提供的数据分别创建出对应的model来获取数据+ (instancetype)initWithDictionary:(NSDictionary *)dictionary{// 先使用当前类(父类)创建出model对象BaseModel *model= nil;// 根据字典中key对应的数据初始化不同的子类对象并将其返回给我们的父类

if([dictionary[@"tag"] isEqualToString:@"news"]) {model= [[News alloc] init];    }elseif([dictionary[@"tag"] isEqualToString:@"images"]){model= [[Images alloc] init];    }elseif([dictionary[@"tag"] isEqualToString:@"music"]){model= [[Music alloc] init];    }    [modelsetValuesForKeysWithDictionary:dictionary];    returnmodel;}

这里直接使用plist文件写一些死数据来展示,那么在tableView中的展示数组该如何获取值呢?

- (NSMutableArray*)dataArray{if(!_dataArray)    {        _dataArray = [NSMutableArrayarray];NSString*path = [[NSBundlemainBundle] pathForResource:@"data"ofType:@"plist"];NSArray*arr = [NSArrayarrayWithContentsOfFile:path];for(NSDictionary*dicinarr) {            BaseModel *model = [BaseModel initWithDictionary:dic];// 将不同子类创建出的model对象添加到我们的数组当中[_dataArray addObject:model];        }    }return_dataArray;}

这样数组dataArray中存的就是我们想要的三种不同的对象。再去展示到页面上就可以了。

当然在展示到Cell上的时候,不同的Model对象需要的Cell也是不同的,所以Cell的创建也是可以通过工厂模工进行创建的。

下面找个问题从去年来深圳,大概面试被问到了两三次,个人觉得是一道比较好的面试题,实用性比较强,大概的意思是,iOS中你是怎么收集错误日志,用户行为统计和分析是怎么做的?

如果找个问题你一点都答不上来,那你可能真的是一个假iOS开发工程师,或者说没做过一个真正意义上的APP,那么我建议你还是找个正规点的公司去做开发,小公司野路子太多了,容易井底之蛙!

首先一点,你可以回答,我们项目中集成了友盟统计(或者其他第三方统计SDK),友盟统计比较强大,用户量的增长,增长率,用户对页面的操作行为都有详细的分析,也有错误日志列表,可以清晰的看到哪里有bug,哪里闪退。

当你回答到这里,虽然不一定能保证你能加分,但起码不会减分了。去年去福田面试,面试官问我还有什么其他方式可以看到错误日志,我一时没想起来,我说只能想到这么多,后来他跟我是这么解释的,xcode内部是可以生成一个错误日志包的,也是可以分析的。大概的意思是用Xcode自带的 symbolicatecrash 工具来解析的.crash文件,然后找到app包所对应的.dSYM文件。然后用终端命令找到出现错误的地方。

其实友盟统计有时候错误列表中有些错误是分析不出来具体哪个类哪行代码出现了问题,那么久需要找到xcode中的.dSYM文件来分析了。个人如果找个点你答上来,那么你一定会另面试官刮目相看的。

但是树欲静而风不止,但是后来有面试官问,你自己有没有在项目中做过用户行为分析与统计,自己做过而不是用第三方,因为由于各种原因,这些有时候并不能满足我们的需求,比如我还想知道用户在什么网络状态下崩溃,什么位置崩溃,什么时间崩溃,崩溃前都请求了哪些接口(这个需要跟后台接口请求日志联合分析),而且有时候我们还想知道除了崩溃之外的错误信息。

这个问题就有点淡淡的忧伤,本来小编本来想把网上找的方法粘贴上来,想想还是算了,各位感兴趣可以自己上网百度下,因为自己没做过的东西,光浏览几遍就想假装做过,简直是天方夜谭,如果你假装知道跟面试官在那里接话,问着问着你就发现自己没话了,你忽然间发现,自己挖的坑自己填不了,那个时候你能只能狂笑一声,既生瑜何生亮!

当你遇到这种问题,你应该这么回答,我之前呆的都是那种中小型公司,由于进度要求,都是用的一些成熟的第三方SDK,自己还没接触过,不过我相信工期允许,配合服务端,还是可以设计出来的。

下面找个问题就是考你OC的基本功,问如何拷贝一个自定义对象?

这个问题大概被问到了两三次,可是我发现我问身边做iOS的朋友,基本上都没答上来,因为确实不怎么常用,但是如今人为刀俎我为鱼肉,何辞为?

首先要你要给你需要深拷贝的自定义对象遵守NSCopying,NSMutableCopying协议,

然后实现重写copyWithZone或mutableCopyWithZone这个协议方法。

只需要这两步,但是很多人这个问题都回答不上来,如果你回答上来了,恭喜你希望大大的!

请说说你项目中是怎么做的适配?

首先你至少得说出系统适配和屏幕适配,这是最基本的。

其实还有一种是字体适配,这个现在有些项目中测试或者UI会要求我们做,那么问题就来了,怎么做字体适配呢,面试官会问到这个问题的,小编在华为面试的时候被问到过?

字体适配,现在iPhone手机的机型也就5s,6,6p这三种屏幕机型,而现在UI设计师做的效果图基本上都是按照6上面的尺寸来的,然后让我们自己去适配, 小编百度了下,字体适配大概是这么回事,5s和6是一套尺寸,plus系列机型的px是前面两者的1.5倍,也就是说不管是控件的控件的宽高,还是控件间的距离,还是字体的大小都按照1.5倍去适配。但是还要一种说法是,按照以iPhone6的屏幕宽度为基准,然后获取当前屏幕的宽度除以这个尺寸,作为一个全局系数的宏,所有的约束和字体大小都乘以这个系数就可以完成字体适配。

上次小编去华为面试,面试官也比较赞同我这种说法,希望能帮到你。

界面布局你是用的什么?

这个问题,得看你擅长用什么,如果你擅长用纯代码你就说说纯代码好,如果你擅长用xib或者masonry你就说加约束更方便,反正就是一个中药好西医快的问题,能够自圆其说就可以了。

小编因为平时些项目xib和masonry用得多一些,我是这么回答面试官的。

面试官,您好,我觉得这个问题,得看公司的需求,如果是中小型公司,赶进度要去拿投资,那么我会选择用xib和sb去做界面布局,因为领导给的时间是很紧的,一切以公司业务为主,性能的问题留到后期运营阶段再调整或是重构,如果是大公司或者项目不赶,那么我会选择用纯代码,因为纯代码性能更好,但是我平时用xib和masonry更多一些。

小编的回答,一般的面试官还是比较认可的,因为现实中做项目也确实如此。

关于第三方框架的应用

一般面试官会问,你用过哪些第三方?

我相信你一定会回答,AFN,MJ,SDwebImage,这些人人都可以说出来的专业名词,但是但凡问这个问题的面试官都会问到它们底层的原理,而SDWebImage的底层原理几乎是面试官必问的一个问题,相信看文章的你一定深有体会,那么我们就要问了为什么这个SDwebImage的原理这么喜欢问。

我的个人理解是,因为SDWebImage实现原理涉及到了,数据的缓存机制,还有多线程的应用,特别是跟tableView的重用结合的时候,考点颇多,给面试官装13的机会也是比较多的。

原理我找了一张图,小编觉得这张图还是方便理解和记忆,不过小编认为最好把这么多信息用三句话去总结出来,传递给面试官,这样简洁而且自己好记忆。


当然这个SDWebImage的原理是一个比较常见的问题,不是很难,但是当SDWebImage遇到tableViewCell图片重用的时候,是很容易出现错乱的,那么这个问题应该如何解决呢?

这个问题我当时去一家做游戏的大公司面试,没回答上来,就与大公司的offer失之交臂,小编觉得这是个很好的面试题。后来我问面试官,面试官差不多是这么回答的,结合我上网查的资料,描述如下

由于cell的重用机制,在我们加载出一个cell的时候imageView数据源开启一个下载任务并返回一个image,当cell重用时,其数据源又会开启一个下载任务下载新的image,但关联的对象是同一个imageView,这个时候直接setImage时会发生错乱。

SDWebImage的处理是:

imageView对象会关联一个下载列表(列表是给AnimationImages用的,这个时候会下载多张图片),当tableview滑动,imageView重设数据源(url)时,会cancel掉下载列表中所有的任务,然后开启一个新的下载任务。这样子就保证了只有当前可见的cell对象的imageView对象关联的下载任务能够回调,不会发生image错乱。

上面这段话是精髓,希望你能记住,然后把SDWebImage的代码大致过一遍,这样面试基本没什么问题。

ViewController的生命周期以及执行顺序

坦白讲,我也搞不懂面试官为什么喜欢问这个问题,而且还要你说全,顺序说对。我能怎么办,我也很绝望啊!

当一个视图被创建,并且在屏幕上显示的时候

1.alloc

创建对象,分配空间

2. init;

初始化对象,初始化数据

3. loadview

从nib载入视图

4. viewDidLoad

控制器载入完成,可以进行自定义数据,以及动态创建其他控件

5.  viewWillAppear

视图出现在屏幕之前,马上这个视图就会被展现在屏幕上了

6. viewDidAppear

视图已在屏幕上渲染完成

当一个视图被移除屏幕并且销毁的时候,代码执行的顺序

1. viewWillDisappear

视图将被从屏幕上移除之前执行

2. viewDidDisappear

视图已经被从屏幕上移除,用户看不见这个视图了

3. dealloc

视图被销毁,释放在init和viewDidLoad中创建的对象

这个顺序还是强行记住吧,没什么好说的。

点击button没有反应,会有哪些原因造成的?

这个面试题据我统计,至少被问到了三四次,虽然比较好回答,但是把所有的可能性说全,还是需要整理下。

1,检查自身试图和父视图的userInterfaractionEnabled是否打开

2,看button的位置是不是在父视图上,如果没有就当然不能点击了

3,看button有没有被覆盖 最好加一个颜色确认

4,检查button的frame

5.在父视图上加上一个touchBegin方法,检查一下。

6.没有添加点击事件

这6点是比较容易答上来的,不过小编前段时间碰到一个问题用以上6个方法都检验不出来,淡淡的忧伤,后来发现不知道是谁,在项目中中写了UIButton分类,然后用runtime把系统的方法给拦截,button的点击方法就执行不了,我想说这个大神,也是厉害。

如果用分类把系统的方法个重写了,或者用runtime把系统的方法拦截,也会没反应,个人觉得面试官不一定能想到这两点,如何你跟他讲出这两点,然后延着这两点,吹吹runtime的一些东西,还是很加分!

block的那些事?

block这个东西内容太多了,但是常用的无非就是做一些传值,回调用途,但是面试往往往基础部分问。

最近小编去一个比较大的公司去面试,问block什么时候在栈,什么时候在堆?问得我头发麻

小编找了下,下面找个总结比较好记一点,但是不知道对不对,如果不对请多多指教。

以下四种情况都是在堆里,其他的都在栈里

①调用Block的copy实例方法时

②Block作为函数返回值返回时

③将Block赋值给附有__strong修饰符id类型的类或者Block类型成员变量时

④在方法名中含有usingBlock的Cocoa框架方法或Grand Central Dispatch 的API中传递Block时

还有有个问题去大公司也容易被问到,block的三种类型

根据isa指针,block一共有3种类型的block

_NSConcreteGlobalBlock 全局静态

_NSConcreteStackBlock 保存在栈中,出函数作用域就销毁

_NSConcreteMallocBlock 保存在堆中,retainCount == 0销毁

而ARC和MRC中,还略有不同

个人觉得如果去大公司面试,block一定要深入了解,不然去了也是白去,面试面到你怀疑人生!

iOS 绘制如何1像素线条?

这个实际上xib,sb拉出来的空间,宽度设置.5,实际上不止一个像素,那么这个问题怎么解决呢

参考这个链接吧,http://blog.csdn.net/keleyundou/article/details/47724361

iOS的性能优化是怎么做的?并且和界面卡端问题结合起来问

面试的公司十之八九都会问这个问题,因为app的性能会直接影响用户体验,一般面试官都会问到。


1.最常用的就是cell的重用, 注册重用标识符

如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell

如果有很多数据的时候,就会堆积很多cell。如果重用cell,为cell创建一个ID

每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell

2.避免cell的重新布局

cell的布局填充等操作 比较耗时,一般创建时就布局好

如可以将cell单独放到一个自定义类,初始化时就布局好

3.提前计算并缓存cell的属性及内容

当我们创建cell的数据源方法时,编译器并不是先创建cell 再定cell的高度

而是先根据内容一次确定每一个cell的高度,高度确定后,再创建要显示的cell,滚动时,每当cell进入凭虚都会计算高度,提前估算高度告诉编译器,编译器知道高度后,紧接着就会创建cell,这时再调用高度的具体计算方法,这样可以方式浪费时间去计算显示以外的cell

4.减少cell中控件的数量

尽量使cell得布局大致相同,不同风格的cell可以使用不用的重用标识符,初始化时添加控件,

不适用的可以先隐藏

5.不要使用ClearColor,无背景色,透明度也不要设置为0

渲染耗时比较长

6.使用局部更新

如果只是更新某组的话,使用reloadSection进行局部更新

7.加载网络数据,下载图片,使用异步加载,并缓存

8.少使用addView 给cell动态添加view

9.按需加载cell,cell滚动很快时,只加载范围内的cell

10.不要实现无用的代理方法,tableView只遵守两个协议

11.缓存行高:estimatedHeightForRow不能和HeightForRow里面的layoutIfNeed同时存在,这两者同时存在才会出现“窜动”的bug。所以我的建议是:只要是固定行高就写预估行高来减少行高调用次数提升性能。如果是动态行高就不要写预估方法了,用一个行高的缓存字典来减少代码的调用次数即可

性能优化和界面卡端是个非常大的话题,网上有很多文章博客讲解,但是个人认为,选几个自己容易记的记一下就可以了,那些不好记的就不用记了,如果自己平时没做过这方面的优化,那么你下个项目就要尝试就要去做了,不然靠看下文章,临时背一下,面试很容易问懵逼!

沙盒的目录结构?

这个问题也是面试比较喜欢,小编去华为面试这个问题也被问到,但是回答得不全。解答如下

/AppName.app 应用程序的程序包目录。由于应用程序必须经过签名,所以不能在运行时对这个目录中的内容进行修改,否则会导致应用程序无法启动。

/Documents/ 保存应用程序的重要数据文件和用户数据文件等。iTunes 同步时会备份该目录。

/Library/Caches 保存应用程序使用时产生的支持文件和缓存文件,还有日志文件最好也放在这个目录。iTunes 同步时不会备份该目录。

/Library/Preferences 保存应用程序的偏好设置文件(使用 NSUserDefaults 类设置时创建,不应该手动创建)。

/tmp/ 保存应用运行时所需要的临时数据,iphone 重启时,会清除该目录下所有文件。

一般请求的数据放在沙盒的哪个目录下?

还是直接上代码吧

//存数据

NSString * sandBoxpath = [NSHomeDirectory()stringByAppendingPathComponent:@"/Documents/save"];

NSString * stroeSting  =@"yi";

[stroeStingwriteToFile:sandBoxpathatomically:YESencoding:NSUTF8StringEncodingerror:nil];

//取数据

NSString * checkString = [[NSStringalloc]initWithContentsOfFile:[NSHomeDirectory()stringByAppendingPathComponent:@"/Documents/save"]encoding:NSUTF8StringEncodingerror:nil];

NSLog(@"取出的数据是:%@",checkString);

应该很直观了吧,小编认为把这两个问题掌握好,沙盒这部分基本就OK了,可以放心复习其他的问题了。

面试的时候当你面完发现这家面得不怎么好,没什么希望,当面试官文你还有什么问题要问的时候,这个时候你就要机智点,你说能不能解答下刚才那个问题的答案是什么,这方面我想回去再了解下,这个面试官还是比较乐意告诉你答案的,毕竟谁都愿意以一种居高临下的姿态去给别人讲解东西。然后你回去就好好总结,技术面试这个东西其实口才部分占的权重不是很大,只要你好好总结,面它个几十家,我就不信你找不到工作。

目前小编只能想到这些问题,如果后面想到其他的面试好问题,会更新到这篇文章的,希望能帮到广大iOS求职朋友。

虽然现在iOS找工作竞争比较大,不像15年之前那么轻而易举了,但是选择即要负责,只要还在这个行业一日,就有必要更好的完善自己的知识体系,互联网这个行业每一年都有新东西,每一年都有火的方向,如果一味的贪多,吃在碗里,看在锅里,恐怕还得不偿失,一位面试官曾经对我这么说:你的经验虽然比较有广度,但是缺乏深度,回去还得修炼。

这话很有道理,不能看智能家居火了就跑着去学智能家居,看着java又火起来,又去学java,这样每一样你虽然都浅尝辄止,每一样你都不精通,都称不上大家。

个人觉得还是先把一门语言学好,基础打好,学扎实了,然后再去学习其他的预言,要有一门很深入的语言在心中,才能立于不败之地。

至于面试,小编认为问到swift的公司很少,swift这门语言出来也有两年多时间了,但是一直都是雷声大雨点小,小编认为还是好好复习下OC的知识,出去面试才有胜算。

然后投简历的网站,我都是投的boss直聘,拉钩,智联,51job,还有中国人才热线,现在目前这个就业形势我觉得你还是海投比较好,集中面试比较好。

上面虽然写了一些面试经验,小编觉得每个人的面试情况不同,每个人的知识体系不一样,可能体会不一样,但是面试完了之后,一定要多多总结,这个原则是不管是对谁,都哪个行业都是适用的。

如果你手上有很多个offer,那么我建议选个规模比较大点的公司,研发部门人数多点公司,因为现在那种初创互联网公司,特别是人数比较少的,还要靠融资苦苦支撑的公司,很容易就崩盘了,而且小公司很多东西不是很规范,如果你工作经验很丰富,还是尝试下大点公司啊,大公司东西规范点,而且跟着一个好的技术经理,好的CTO,能学到一些管理方式的东西,说话方面的东西。并且接触的人脉资源也更多优秀,以后的道路更宽一些。

最后,祝各位同位同行,在这个寒冬期找找到自己的定位,走向人生巅峰,迎接白富美!

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

推荐阅读更多精彩内容

  • 大江东去天下大势,合久必分,分久必合,如今这iOS的行情就是从波峰到波谷,从波谷又趋于稳定,最近小编因为任性离职了...
    英俊神武阅读 430评论 0 0
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,121评论 29 470
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,344评论 0 35
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 1,960评论 0 7
  • 1.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令伟阅读 1,042评论 0 10