iOS收藏为了更好的活着面试题 For BearLin

iOS面试题收集

2017-05-11  本文已影响2586人  Link913

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?


微博算法题
    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 修饰的变量本身是否可以认为是线程安全的? 如果不是,那什么类型的变量可以认为是安全的,又有什么样的变量是不安全的?举例说明即可
上一篇 下一篇

猜你喜欢

热点阅读