iOS面试题收集

github上不错的一套题

swift面试题


美团

画一个原生和webview混合开发的框架,写出主要的方法

runtime 怎么把嵌套结构的数据赋值给模型,如何优化一下


    什么是响应链,它是怎么工作的?
    如何访问并修改一个类的私有属性?
    iOS Extension 是什么?能列举几个常用的 Extension 么?
    如何把一个包含自定义对象的数组序列化到磁盘?
    Apple Pay 是什么?它的大概工作流程是怎样的?
    iOS 的沙盒目录结构是怎样的? App Bundle 里面都有什么?
    iOS 的签名机制大概是怎样的?
    iOS 7的多任务添加了哪两个新的 API? 各自的使用场景是什么?
    Objective-C 的 class 是如何实现的?Selector 是如何被转化为 C 语言的函数调用的?
    UIScrollView 大概是如何实现的,它是如何捕捉、响应手势的?
    Objective-C 如何对已有的方法,添加自己的功能代码以实现类似记录日志这样的功能?
    +load 和 +initialize 的区别是什么?
    如何让 Category 支持属性?
    NSOperation 相比于 GCD 有哪些优势?
    strong / weak / unsafe_unretained 的区别?
    如何为 Class 定义一个对外只读对内可读写的属性?
    Objective-C 中,meta-class 指的是什么?
    UIView 和 CALayer 之间的关系?
    +[UIView animateWithDuration:animations:completion:] 内部大概是如何实现的?
    什么时候会发生「隐式动画」?
    如何处理异步的网络请求?
    frame 和 bounds 的区别是什么?
    如何把一张大图缩小为1/4大小的缩略图?
    一个 App 会处于哪些状态?
    Push Notification 是如何工作的?
    什么是 Runloop?
    Toll-Free Bridging 是什么?什么情况下会使用?
    当系统出现内存警告时会发生什么?
    什么是 Protocol,Delegate 一般是怎么用的?
    autorelease 对象在什么情况下会被释放?
    UIWebView 有哪些性能问题?有没有可替代的方案。
    为什么 NotificationCenter 要 removeObserver? 如何实现自动 remove?
    当 TableView 的 Cell 改变时,如何让这些改变以动画的形式呈现?
    什么是 Method Swizzle,什么情况下会使用?

1,下面代码在按钮点击后,在ARC下会发生什么,MRC下呢?为什么?
    @property(nonatomic, assign) void(^block)();
    - (void)viewDidLoad {
        [superviewDidLoad];
        int value = 10;
        void(^blockC)() = ^{
            NSLog(@"just a block === %d", value);
        };
        
        NSLog(@"%@", blockC);
        _block = blockC;
        
    }

    - (IBAction)action:(id)sender {
        NSLog(@"%@", _block);
    }

    2,在ARC环境下这段代码为什么不会崩溃?

    @property(nonatomic, weak) void(^block)();

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        void(^ __weak blockA)() = ^{
            NSLog(@"just a block");
        };
        
        _block = blockA;
        
    }

    - (IBAction)action:(id)sender {
        _block();
    }

    3,下面是一个员工表,manager_id表示对应的boss的ID。通过一个SQL找出下表中比boss工资还高的人。。。。
    id  name    salary  manager_id
    1   Noah    70000   NULL
    2   西兰花 80000   1
    3   椰菜花 80000   NULL
    4   没钱花 80000   3

    输出格式为:

    name
    西兰花

    4,写一个函数,输入一个数如38,拆分 3 + 8 = 11,1 + 1 = 2,最后2无法拆分就返回(伪代码也行)

    5,通过runtime添加的“关联对象”和类的实例变量有什么区别?使用时要注意什么?

    6,用一个生活中的例子来说说同步和异步。

    7,线程间通信在OC中有几种方式?分别是?常用那种?

    8,使用快速枚举迭代一个可变数组时需要注意什么问题?怎么避免?

    9,什么是面向对象的多态性?

    10,UIViewController的presentViewController和UINavigationController的pushViewController方法分别多用于什么交互场景?

    11,NSOperation和GCD的区别是什么?前者多用于什么场景?

    12,面向接口编程指的是什么?为什么说面向实现编程是一种错误的编程方式?

    13,在iOS开发中遇到那些类族(Class Cluster) ?如NSNumber这种。为什么需要这种设计方式?

    14,javascript的原型链和OC的继承有什么区别?

    15,Hybrid开发的优势在哪里?目前有那些框架可以实现Hybrid开发?

    16,使用了ARC是不是就等于没有内存泄漏了?如果不是的话请举例。

    17,下面代码中为什么可以直接用self?
    [UIView animateWithDuration:1 animations:^{
        self.view.backgroundColor = [UIColor yellowColor];
    }];

    下面这段代码可以用self吗?为什么?
    - (void)doSomething {
        [BlockClass doSomethingUseBlock:^{
            NSLog(@"%@", self);
        }];
    }


    18,进程的内存布局是怎样的?

    19,在GCD中,那几种场景会出现死锁的现象?怎么避免?

    20,怎么用NSOperation封装一个异步请求?这个Operation需要放到NSOperationQueue里调度的。

    21,CoreFoundation和Foundation有什么区别?

    22,怎么判断两个链表是双交的?

    23,怎么判断一个链表存在环?

    24,当一个View的bounds原点不为0的时候会出现什么情况?

    25,OC的数组是怎么实现的?和C的数组区别在?简单说一下即可。

    26,weak和assign有什么区别?

    27,setNeedLayout的作用是什么?

    28,什么时候用NS_OPTIONS,NS_ENUM?

iOS面试题收集_第1张图片
iOS面试题收集_第2张图片
iOS面试题收集_第3张图片
iOS面试题收集_第4张图片

iOS面试题收集_第5张图片
微博算法题

    1、64位操作系统,64位编译器  sizeof(int) sizeof(char)  sizeof(int *) sizeof(char *) 分别是多少
    2、64位操作系统,一个结构 struct aStruct{int a; char b; int c; char d}; 此时 sizeof(struct aStruct) 是多少? 如果是 struct aStruct{int a; char b; char d; int c};此时 sizeof(struct aStruct) 是多少?
    3、全局并发队列和自定义并发队列的区别,如果现在有两种任务需要并发处理,其中一种是:任务单位小,数量多  另一种是:任务单位大,数量少 分别应该使用哪种队列处理?为什么?
    4、为了防止循环引用,我们都知道使用weak(self); 但是程序中偶尔会见到strong(self); 这种用法,请问:strong(self)的应用场景是什么?
    5、为了防止循环引用,我们都知道使用weak(self),是不是所有的block 如果内部需要使用对象本身,都需要使用weakself?举例说明
    6、现有一个对象a,对象a 强持有了自定义对象b、c、d, 是不是可以说,当a的dealloc 只要执行了 我就可以认为内存没有泄漏了?如果不是的话,请举出例子让a对象完全释放
    7、类方法和对象方法的区别何在?类方法的生存周期? 相对与对象方法,哪类处理适合使用类方法?
    8、kvo监听是否一定是在主线程完成的?如果不是,请举例说明
    9、某同事开启了一个NSTimer,但是无论如何这个timer都跑不起来,作为他的老大,代码看起来没什么问题,以你10年ios的开发经验,第一反应是问题出在哪?
    10、多线程编程种,死锁产生的条件是什么?死锁是不是只在主线程发生?
    11、举出一个例子,说明dispatch_sync 的应用场景
    12、如何创建一个常驻线程?
    13、我们知道,多线程读写,只要有1个写,就有可能出现并发问题,解决方案可以用锁,但我们又知道锁的效率不高,并且破坏程序结构,加锁的代码通常并不易理清逻辑,那么,还有什么样的手段能实现这个目的?(考虑队列) 如何实现?
    14、基于13题的前提,假如现在有一个模型,写操作较少,但是读操作非常多,如何优化13题的模型?(考虑队列和dispatch_barrier函数族)
    15、dispatch_group函数组的应用场景是什么?假如现在让你使用信号量(dispatch_semphore)来模拟类似的功能,如何实现?
    16、原子操作atomic 修饰的变量本身是否可以认为是线程安全的? 如果不是,那什么类型的变量可以认为是安全的,又有什么样的变量是不安全的?举例说明即可

你可能感兴趣的:(iOS面试题收集)