面试集锦之常见知识点

1.MVC跟MVP的区别以及使用的优缺点?

MVC:View和控制器耦合性强
MVP:面向协议,View和Model完全解耦,Controller层不显示网络请求数据的过程,只要遵循协议就能拿到数据
MVVM: KVO双向绑定

2.怎么解决iOS打包成功之后,运行在iPhone上会闪退,黑屏的问题

1.证书有错误(发布证书打包AppStore)
2.设备不在开发者设备里面
3.隐私权限字段未添加
如何解决
查看:embedded.mobileprovision, cd 到这个文件的目录下
security cms -D -i embedded.mobileprovision > entitlements_full.plist

3.OC中字典的实现原理

哈希表: 本质就是一个数组
哈希算法
通过哈希函数算出它的位置,直接从数组中取,不用遍历,提高了查找速度(时间复杂度底)。
字母重复时:开放地址法,给个增量

4.SDWebImage是怎么来清理缓存的?

1.找到磁盘缓存目录
2.找到resourceKey
3.创建目录文件的枚举器(NSDirectotyEnumerator)
4.计算过期时间(可以设置最大缓存时间)
5.删除文件
①根据过期时间,7天过期删除
②把之前的没删除的按时间顺序存起来,根据自定义的最大缓存删除一半,直到缓存达到一半为止

5.SDWebImage是怎么来处理接收的内存警告的?

使用clearMemory方法清空内存缓存
继承于NSCache, AutoPurgeCache自动清理缓存

6.计算图片的成本大小

计算图片所占内存大小
SDCacheCostForImage
获取缓存中所有文件大小,通过NSDirctoryEnumerator,遍历磁盘缓存路径

7.SDWebImage中Clear和和Clean有什么区别?

  • clean 部分删除,磁盘缓存(1.过期的缓存文件2.缓存超过设定阈值时按时间顺序删除缓存中图片阈值的一半)
  • clear全部删除,包括文件夹(1.删除缓存目录2.创建同名的缓存目录)

8.iOS静态库和动态库的区别

静态库:链接时会被完整的复制到可执行文件中,被多次使用就会有多份拷贝
动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,节省内存。
将程序编译成可执行文件

clang -ccc-print-phases main.m

静态库和动态库区别就在于linker

9.Block的理解,外部变量的修改

1.block的定义

void (^block)(void) = ^{
    NSLog(@"block");
}
block()

2.block的分类
①NSGlobalBlock 全局block(不引入外部变量)
②NSMallocBlock 堆block(引入外部变量)
③NSStackBlock 栈block(函数返回后Block将无效)
3.修改外部变量
__block(将观察到的对象由栈区copy到堆区)

10.回到主线程方案

  • NSThread
[self performSelectorOnMainThread:@selector(WantToGoBackMianThread:) withObject:@"1" waitUntilDone:YES];

  • NSOperationQueue
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
            //需要在主线程执行的代码
}];
  • GCD
 dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"更新UI%@",[NSThread currentThread]);
        });

面试集锦之开发常见问题


1.OC中处理json解析出NSCFString

//注意:
     NSDictionary * homeworkDic;
if ([[dict valueForKeyPath:@"data.homework"] isKindOfClass:[NSDictionary class]]) {
     homeworkDic = [dict valueForKeyPath:@"data.homework"];
  }else
  {
     homeworkDic = [self dictionaryWithJsonString:[dict valueForKeyPath:@"data.homework"]];
  }

2.根据网络状态加载图片

  • 先从磁盘中获得原图 -> 原图已经被下载过->直接显示
  • 原图并未下载过-> WiFi直接下载原图
  • 原图并未下载过-> 3G\4G网络下时候要下载原图
  • 原图并未下载过-> 没有可用网络,此时从磁盘缓存中查找缩略图
  • 缩略图已经被下载过-> 直接显示
  • 没有下载过任何图片-> 显示占位图(placeholder)

3.ViewWithTag-查找子控件报错

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    // 求出标题按钮的索引
    NSUInteger index = scrollView.contentOffset.x / scrollView.width;
    // index == [0, 4]
    // 点击对应的标题按钮
    HKTitleButton *titleButton = self.titlesView.subviews[index];
    //HKTitleButton *titleButton = [self.titlesView viewWithTag:index];
    //此代码 索引为0时会报错(viewWithTag 递归查找,包括自己 先查找自己的tag,再查找子视图的tag,父视图默认tag为0,找到的是UIView而不是Button,所以setSelected方法找不到)
    [self titleButtonClick:titleButton];
}

4.iOS12下APP进入后台后再返回前台连接断开

1.在工程的AppDelegate文件中
@property (nonatomic, unsafe_unretained) UIBackgroundTaskIdentifier taskId;
2.在AppDelegate中的- (void)applicationDidEnterBackground:(UIApplication *)application 方法中
self.taskId =[application beginBackgroundTaskWithExpirationHandler]
用完的时候调用endTask
3.模拟一个长时间的任务
4.后台任务结束的时候要释放定时器

5.空数组的处理

if (![array isKindOfClass:[NSNull class]] && array.count > 0 && array != nil) {
}

数据源数组中包含空数组,怎么移除?

if ([self.dataArray containsObject:@[]]) {
     [self.dataArray removeObject:@[]];
}

6.在同一页面同时展示登录和注册View

在一个UIView设置它的Frame的宽度是屏幕的两倍,然后把登录的View和注册的View同时加载这个View上(注册View.x=这个View宽度的一半),点击切换按钮时改变这个UIView的leadingConstraint(View.x)就可以让这两个View显示。

7.升级Https证书报错

iOS11 HTTP load failed (error code: -999)

// 1.设置非校验证书模式
    _sessionManager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    _sessionManager.securityPolicy.allowInvalidCertificates = YES;
    [_sessionManager.securityPolicy setValidatesDomainName:NO];

8.某个页面禁止侧滑手势返回

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

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,103评论 1 32
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,317评论 0 9
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 2,151评论 0 12
  • 总是会想到他,不知不觉已过了这么久了,我还是很喜欢他。 关于他,我似乎一无所知,我所知道的好像只有...
    chanyeol5阅读 92评论 0 2
  • 总是会想起以前在一起的时候,你的调皮,你的淘气,你的可爱,你的懂事……所有的都是美好的。总是会担心现在的你有没有好...
    丑菇凉傻天真阅读 81评论 0 0