2023.11月面试

上通科技

1.mvvm mvc 哪个使用多,区别,数据之间如何绑定,之间持有关系,数据变化如何更新
2.runtime 理解 runloop 理解
3.RAC使用介绍 ,手动创建信号量
4.组件化路由 组建之间通讯
5.git命令 合并其他分支单条记录
6.离屏渲染,图像渲染机制
7.NSDefault sqlit 归档 区别使用
8.OC语言特性 和其他语言有啥区别,设计方面有啥特别好的

伊对

1.聊天功能架构,遇到什么问题,怎么解决的,抢座问题,弹幕如何实现的

新阅读

1.多线程打印问题

NSLog(@"1");
    dispatch_queue_t queen = dispatch_queue_create("11111", DISPATCH_QUEUE_SERIAL);
    
    dispatch_sync(queen, ^{
        NSLog(@"2");
        dispatch_async(queen, ^{
            NSLog(@"3");
        });
        NSLog(@"4");
    });
    NSLog(@"5");

2023-12-02 12:06:07.421770+0800 1111[1917:31224] 1
2023-12-02 12:06:07.421923+0800 1111[1917:31224] 2
2023-12-02 12:06:07.422056+0800 1111[1917:31224] 4
2023-12-02 12:06:07.422202+0800 1111[1917:31224] 5
2023-12-02 12:06:07.422219+0800 1111[1917:31335] 3

打印2的时候有没有创建新线程,改成异步呢?

NSLog(@"1");
    dispatch_queue_t queen = dispatch_queue_create("11111", DISPATCH_QUEUE_SERIAL);
    
    dispatch_sync(queen, ^{
       
        NSLog(@"2--%@",[NSThread currentThread]);
        dispatch_async(queen, ^{
            NSLog(@"3");
            
        });
        NSLog(@"4");
    });
    NSLog(@"5");
2023-12-02 12:13:11.639784+0800 1111[2367:41148] 1
2023-12-02 12:13:11.640017+0800 1111[2367:41148] 2--<_NSMainThread: 0x6000037dc500>{number = 1, name = main}
2023-12-02 12:13:11.640158+0800 1111[2367:41148] 4
2023-12-02 12:13:11.640305+0800 1111[2367:41148] 5
2023-12-02 12:13:11.640324+0800 1111[2367:41228] 3
NSLog(@"1");
    dispatch_queue_t queen = dispatch_queue_create("11111", DISPATCH_QUEUE_SERIAL);
    
    dispatch_async(queen, ^{
       
        NSLog(@"2--%@",[NSThread currentThread]);
        dispatch_async(queen, ^{
            NSLog(@"3");
            
        });
        NSLog(@"4");
    });
    NSLog(@"5");
2023-12-02 12:12:03.463359+0800 1111[2307:39519] 1
2023-12-02 12:12:03.463600+0800 1111[2307:39519] 5
2023-12-02 12:12:03.463692+0800 1111[2307:39608] 2--<NSThread: 0x6000005e4a00>{number = 7, name = (null)}
2023-12-02 12:12:03.463814+0800 1111[2307:39608] 4
2023-12-02 12:12:03.464029+0800 1111[2307:39608] 3

2.修改控件transform 控件的frame 和bounce 如何变化
frame改变bounce不变
3.轮播图如何实现,手指一直拖着轮播不放如何做循环
4.自定义的通知中心,如何实现,怎么存储,怎么监听,详细讲讲
5.求字符串长度如何设计计算方法,如何遍历

{
    NSUInteger length = 0;
    for (NSUInteger i = 0; i < self.length; i++) {
        int ch = [self characterAtIndex:i];
        // 如果是汉字 +2
        if (isascii(ch)){
            length += 1;
        }else{
            length += 2;
        }
    }
    return length;
}

6,多个嵌套自动释放池,存储什么表结构,怎么释放
一个程序中可以创建N个自动释放池,并且自动释放池可以嵌套,如果存在多个自动释放池,那么自动释放池会以“栈”的形式存储,先进后出

@autoreleasepool{//创建第一个自动释放池
    @autoreleasepool{//创建第二个自动释放池
        @autoreleasepool{//创建第三个自动释放池
     }//销毁第一个自动释放池
 }//销毁第二个自动释放池
}//销毁第三个自动释放池

7.copy修饰可变数组,原子锁和非原子锁
8.网络请求加密,防止中间抓包
9.一次上传多张图片,必须按顺序依次上传,如何实现
10.视频如何实现边下边播
11.卡顿原因,卡顿检测. 直播礼物解决卡顿,怎么预防奔溃
12.弹幕如何实现,开发中遇到怎么困难怎么解决的
13.内购掉单问题处理
14.NStimer 计时准确吗,为什么
15.KVO 原理 ,原类里重写了监听属性的set方法,还能监听么,原类set方法还能走么
两个方法都会走

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,591评论 8 265
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,917评论 2 59
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,140评论 1 32
  • 前言 学如逆水行舟,不进则退。共勉!! 前段时间在金九银十的跳槽季节里,我也是经过自己的思考,面试了几家我觉得挺不...
    iOS祈峰阅读 757评论 0 3
  • 1.1 谈一谈GCD和NSOperation的区别? 首先二者都是多线程相关的概念,当然在使用中也是根据不同情境进...
    John_LS阅读 1,331评论 0 12