一个渣渣iOS春招总结

作者: 子欣_fd97 | 来源:发表于2018-04-24 14:52 被阅读1572次

       地处北方一隅,今年很多公司春招没来现场,所以基本都是提前批的线上面试,整个三月都过的比较累,4月份的校招应该不参加了,还是当当咸鱼了,然后去实习了。

    虽然之前一直比较抗拒背书和刷题,但是经历之后发现自己的基础是真的差,打好基础真的很有必要。

    1 问到的问题总结:

     不能直接po原题,但是我总结了下背后的知识点:以下的知识点都最好挖的深一点,我这里只是点一下,但是每个点都可以挖很深,尽量都和runtime&runloop&性能优化穿起来说,结合自己遇到的坑说下)

    ..异步绘制&离屏幕渲染&CPU渲染和GPU渲染(说白了就是一些性能优化,这块比较看功底)

    ..UIView 生命周期,UIViewController的生命周期

    ..iOS中有哪些锁(原理+应用+优化)

    ..怎么看待审核被拒

    ..runloop中将一个任务放到第二次runloop中执行:利用socket/port做一些事情(封装一个..source)

    ..UIKit框架架构图多看看

    ..id和instencetype的区别

    ..instrument的插件的使用(尽量都用一下)

    ..IMP和SEL以及具体执行的操作

    ..在项目什么时候选择使用GCD,什么时候选择NSOperation?(根据项目规模以及接口的策略决定以及线程操作复杂程度)

    ..发现程序崩在一个objc_msgSend函数里面,这时候可以看的到当前正在调用哪个对象的哪个selector吗?(可以的,可以查到调用的堆栈信息。还可以将这个堆栈信息dump下来)

    ..NSString类型的property常用copy的原因

    ..如何把异步线程转化成同步线程进行单元测试

    ..autoreleasepool的使用场景和原理:基于runloop回答,并且提及autoreleasepage的实现(基于双向链表))

    ..对于Objective-C,你认为它最大的优点和最大的不足是什么?对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。

    ..app内存是怎么分析的:Xcode有两种方法(有区别:是否计入图片缓存)

    ..内存的使用和优化的注意事项

    ..怎样使用performSelector传入3个以上参数,其中一个为结构体。

    ..nsstring对象的retainCount问题:(细抠下)

    ..isMemberOfClass 和 isKindOfClass 联系与区别

    ..实现准确的定时器:

    ..NSObject实现了哪些协议

    ..消息转发的机制(基于runtime讲全点)

    ..使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么

    ..能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量

    ..手势相应和触摸事件传播的优先级以及处理等

    1.2 计算机基础(计网+数据结构+编程基础+操作系统):

    ..数据库没咋问就不po了。。。。

    1.2.1计算机网络:

    ..NSURLConnection 相比,NSURLsession 改进:

    ..AFN用什么方式实现多线程

    ..TCP是基于流式传输的,怎么设计协议,进行协议的解析?

    ..怎么实现上传/下载任务的断点续传

    ..发送网络请求,什么时候连IP、什么时候连域名

    ..socket编程有了解吗?用在项目的哪里?

    ..客户端编程的时候,客户端send成功了,服务端没收到,有什么可能的原因

    ..只用TCP,如何设计这个聊天协议?

    ..http和scoket通信的区别。

    ..CFSocket使用有哪几个步骤。Core Foundation中提供了哪几种操作Socket的方法?

    ..HTTPS具体过程,7次握手,以及如何防止中间人攻击的

    ..常见的状态码(应用层次)

    ..URL重定向

    ..TCP、UDP的特点以及具体应用

    ..滑动窗口的理解以及慢开始的措施

    1.2.2 数据结构:

    ..哈希表的实现(抠的很细):当拉链长度超过阀值时,会有什么优化(参照JDK的处理思想)

    ..常见的链表算法(参照《剑指 offer》)

    ..stack&queue算法(参照《剑指 offer》)

    1.2.3 编程基础:

    ..浮点类型为什么不能精确

    ..几种容器的查询、插入效率

    ..可变容器的实现原理

    ..C++如何实现一个不能被继承的class

    ..C的编译过程

    ..动态链接和静态链接库的区别

    ..C++和OC的区别

    ..GC和ARC的比较(GC是runtime的)

    ..单例的实现(加锁和性能优化)

    ..内存的五大区域

    ..代码文件编译生成过程完成的事情

    1.2.4 操作系统

    ..操作系统里线程切换是怎么实现的,怎么把线程调用函数的参数抛到另一个线程

    ..流水线的概念

    ..虚拟存储器的页面置换算法(编程实现)

    ..死锁的4个必要条件

    ..进程间通信的方式

    ..缓冲区概念

    ..死锁的预防算法

    1.3 算法基础相关:

    1.3.1图:注意算法的灵活运用

    ..最小生成树(prime算法、kruskal算法)

    ..最短路径算法(floyd、dijkstra)

    ..图中是否存在环

    ..DFS&BFS的应用:迷宫问题比较多

    ..拓扑排序

    1.3.2 树:基本都是2叉树的算法

    ..这块参照《剑指 offer》+自行百度常见的二叉树算法

    1.3.3 排序算法:

    ..一定要深入理解三种排序的原理以及优化方法:比如大文件排序算法的优化,可利用快排和归并的特点,利用两种排序的特点,混合使用。

    ..堆排序

    ..快排:递归&非递归

    ..归并:递归&非递归

    ..内排序和外排序

    1.3.4 DP:问的比较多,但是种类有限

    1.3.4.1 LCS类:

    ..字符串最长公共子序列

    ..最长单调递增子序列:先sort 然后转化为LCS问题

    1.3.4.2背包问题:

    ..0-1背包问题:

    ..数组分为两个sum和尽量相等的子数组:背包容量=sum/2,转化为0-1背包问题

    ..多背包问题:n个背包,求最大和

    ..完全背包问题:

    ..硬币组合问题:

    1.3.4.4所有组合数问题

    ..1分2分5分的硬币三种,组合成1角,共有多少种组合?

    ..一个人上台阶可以一次上1个,2个,或者3个,问这个人上n层的台阶,总共有几种走法

    1.3.4.5最小路径和问题:

    ..矩阵的最小路径和

    ..三角形的最小路径和

    1.4编程思想&设计模式等:

    ..编程思想参照《iOS编程之道》

    ..设计模式主要是MVC&MVVM&MVCS的理解

    ..组件化需要了解下

    ..解耦的常用方法

    ..设计模块的设计思路:

    1,操作队列如何封装GCD,达到设置最大并发数(信号量实现)

    2,NSNumber的设计(类簇的设计思想)

    3,宽窄接口的设计等

    2 推荐书籍:

    .剑指offer(3编,对应牛客网的上的题全部刷完);

    .面试宝典(C++版)一遍

    .操作系统大概看一遍;

    .数据结构一遍,主要是hash那片,平时不太关注的到的地方,懂一些原理。

    .计算机网络【HTTP/HTTPS、tcp、udp、tcp/ip协议簇】大致是这些了

    数据库:

    leetcode刷题,easy全部刷完+部分中等题或者牛客网刷题均可

    以下几本书,多看几遍,看一遍并不能很好的理解(可能是因为我比较菜):

    Objective-C高级编程(多线程与内存管理);

    Effective Objective-C 2.0;

    iOS编程之道

    精通Objective-C

    有什么问题可以加我 QQ:2219167772

    相关文章

      网友评论

      本文标题:一个渣渣iOS春招总结

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