iOS面试题收集

作者: Link913 | 来源:发表于2017-05-11 09:18 被阅读2586次

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

    相关文章

      网友评论

      本文标题:iOS面试题收集

      本文链接:https://www.haomeiwen.com/subject/qngntxtx.html