likes
comments
collection
share

21年iOS面试总结

作者站长头像
站长
· 阅读数 5

由于自身家庭原因,今年5月份后计划换工作,边工作边准备,然后面试,前后大概持续了2个多月吧,换了一个坑,薪资提升了¥%+。我还是有自知之明的,就这水平,自己还算满意吧,现在准备入职了。

最近听的最多的词就是“卷”, 各种卷,越来越卷。 卷,每个人理解的都不一样,就看自己怎么看待了。

这里说一个小插曲,为啥每个公司都要求薪资保密,这个在员工流失率上贡献很大啊。 当你不知道其他人薪资时,只要你自己满意,就还会继续闷头干。但是一旦当你知道了其他和你干一样活的人,薪资差距有这么多,你肯定不满意了,心生情绪,各种问题都来了。

另外离职这个事,会“传染”! 同一个小组里,一个人离职了,涨薪幅度很夸张。同组的人知道后肯定也会萌生我也试试的想法。 昨天还在一起工作呢,工作的内容基本一样,换个坑,不管是职级还是薪资都涨了,还很夸张,你也不甘心啊。
都说现在客户端行情不好,不好找工作。但是从我身边同事找工作情况来看,机会很多啊,薪资涨幅很满意啊。就近离职几个,薪资都double了,都按年包算了。这这与平时看到的消息差距咋就这么大呢,可能他们就是真正的大佬吧。。 也是因为这个我们小组5个人今年都弃坑了。 现在市面上不缺iOS干活的,很缺高级、资深、架构级别的。 这也是“卷”带来的,所以说,“卷”的是越来越好还是越来越拉跨,就看你自己怎么对待这个卷了。

回到正题

说iOS面试。近年出现的名词,什么“客三消”,“客二消”啥的,搞的人心慌慌。 在加上iOS就那些东西,面试也会越来越卷,准备过程还是要下些功夫。另外面试也是一个技术活,这个是实力和运气共同的结果。 每年还是要去了解下市场的,看目前市场上什么样了,保持饥饿感。 还有,同样是一瓶水,放在不同的地方,价格是不一样的。所以你懂的😜

从我自己实际情况出发哈,由于我最近一年大部分时间都在做Flutter开发,原生做的不多,使用的是OC,swift没用。 所以面试基本上问了Flutter和 OC相关内容。

这里还要提一句算法相关的东西。 近年来各大厂基本都会考察算法题目。但是就我今年接触的来看,算法考察并不算难,你会一些常用的链表、二叉树、排序算法就够了。 这里也可能我面试职级低,没遇到那么难的。 也有一种说法是,新应届生算法考察会严格些,老油条考察的没那么难,会基本常用的即可,毕竟你只是客户端开发,老油条还是注重底层优化方面吧。 还有现在貌似不会一上来就让你手撕两道算法题了,我遇到的都是先面试,面试满意后在考察算法。算法可能是加分项了,我也认为这样式合理的。

这里小吐槽一下,有些公司面试是真的不爽,硬是为了考察面试而问问题,有些还会搞一些生僻词汇,为了体现优越感么,小弟不懂了。 不过大部分公司面试过程都很好,流程很好很满意,面试官也很NICE。

下面的题目是我面试过程中遇到的,大厂小厂都有,没别的意思,应该也不存在什么泄露面试题目啥的。挑选部分列出来只是给个参考,看看你会多少,如果你换坑到什么地步了。

来了哦

1、Flutter接入过程中,有没有遇到什么问题。你理解的Flutter ,优缺点, 和其他跨平台的区别?

2、多线程通信 你知道的锁。 GCD 传递block的过程讲讲。

3、多个网络请求结束后再执行方式怎么做的。

4、项目架构模式。 MVC,MVVM,MVP,VIPER的理解, 解耦绑定方式怎么搞的?

5、pod update 和 pod repo update的区别? pod 实现原理讲讲。

6、项目组件化,怎么通信的,都有什么通信方式。

7、autoreleasepool 底层实现。autoreleasepool 里都有什么? 把什么应该放到autoreleasepool里?  使用场景,实例。

8、dispatch once  底层实现。

9、内存管理 ARC 都做了什么? 创建一个对象返回这个过程,arc做了啥?

10、NSNumber *n1 = @1; NSNumber *n2 = [NSnumber numberWithInt: 1];   有啥区别?

11、你怎么理解category, 作用是啥?  你是新建文件还是写在同一个上面, 分类怎么划分?  还有分类A 和 分类B,  如果分类B用到了分类A的内容, 你怎么搞?

12、block值捕获,hook c 函数怎么搞?  怎么hook block的?  

13、我某个动作,执行方法A,我这时候我想取消它,怎么搞? 事件响应链传递过程?

14、bugly 怎么跟踪处理的?   就给你一个日志符号表  你怎么搞?

15、做了哪些性能优化?

16、声明式UI,如果设计这样一个库,你觉得应该需要什么?  假如让你设计一个类似的flutter 或者 SwiftUI , 你怎么搞?

17、渲染树和构建树。 CALayer 和 UIView的区别?离屏渲染怎么回事? 用贝塞尔曲线画圆角为啥就没有了性能问题?

18、第三方库源码: RxSwift(可监听序列是如何实现的)  SDWebImage

19、swift 协议组合的实现原理

20、struct 和 类的区别?操作struct 为啥 比操作类快? 栈和堆的区别?  为什么要设计栈和堆区?

21、组件化路由设计思路,你平时用的设计模式。

22、多语言本地化资源如何实现.

大概就这么多吧,有底层原理,也有项目经验,还有纯12问题。 来看看,你能答什么样吧