都说今年程序员跳槽就业行情很差,所以想要换工作的同学们一定不要裸辞。今天给大家准备了一些面试题:
操作系统
进程与线程的区别*2,什么可以公用什么不能公用
CPU执行单位
堆与栈的区别
内核态和用户态的划分与切换
虚拟地址怎么映射到物理地址
简述IO多路复用
简述进程通信的各种方法
线程有几种状态
死锁的产生条件,如何检查,如何解决
文件描述符fd是线程私有还是公有
计算机网络
简述从输入网址到浏览器显示的过程
TCP为什么是三次握手四次挥手
TCP如何保障数据包有效
HTTP和HTTPS的区别
TCP与UDP区别
微信发文件用什么协议
OSI的七层架构以及每一层都有哪些协议
所知道的HTTP请求头和返回码
数据库
简述关系型数据库与非关系型数据库的区别与联系
简述数据库的事务
如何在hibernate中查看原始的sql语句
MySQL事务隔离级别分别有哪些
分库分表的依据是什么,有用到什么工具
数据库索引的原理
上万/十万用户查询数据库的场景如何设计
建表语句怎么写
char和varchar区别
Innodb和Myisam存储引擎的区别
修改表的字段的语句,会上锁吗
什么时候上行锁
聚集索引和非聚集索引,非聚集索引做什么
索引有哪几种
一个表同时有ID和UUID,用哪个当主键(索引)-用ID,因为ID是顺序的,而UUID是乱序的,需要经常调整B+树的结构
B+树的结构是如何调整的-某个节点存的数据>一个阈值后会调整结构
什么时候会创建新的分支
一页存多少数据
数据结构
HashMap的底层实现,如何解决哈希冲突
二叉树有哪些遍历方式,应用的场景都有哪些
快排实现的原理
对堆排序有了解么,堆排序的空间复杂度为什么是O(1)
socket
select和epoll的区别*2
epoll被通知的话,怎么知道是哪个文件描述符准备好了
Zookeeper
Zookeeper是做什么用的
Zookeeper选举流程
Zookeeper处理过程
设计模式
线程安全是如何做到的
Java中IO包下的inputstream用了什么设计模式
简述知道的设计模式
手写单例模式,应用场景
Java
简述AOP和IOC的作用
Java中所有类的父类是什么,都有什么方法,请列举
JVM内存的分布,不同版本之间有区别么
wait和sleep分别属于哪个类的方法
lock和synchronized的区别
什么样的任务适合用多线程,以及什么适合单线程
ArrayList和LinkList的区别
Redis
Redis数据结构都有哪些
Redis为什么快
Redis多路复用?
Redis内存淘汰?
Swift
Swift中struct和class有什么区别?
Swift中的方法调用有哪些形式?
Swift和OC有什么区别?
从OC向Swift迁移的时候遇到过什么问题?
怎么理解面向协议编程?
OC语法
Block是如何实现的?Block对应的数据结构是什么样子的?__block的作用是什么?它对应的数据结构又是什么样子的?
GCD中的Block是在堆上还是栈上?
NSCoding协议是干什么用的?
KVO的实现原理
NSOperation有哪些特性比着GCD有哪些优点,它有哪些API?
NSNotificaiton是同步还是异步的,如果发通知时在子线程,接收在哪个线程?
UI
事件响应链是如何传递的?
什么是异步渲染?
layoutsubviews是在什么时机调用的?
一张图片的展示经历了哪些步骤?
什么是离屏渲染,什么情况会导致离屏渲染?
CoreAnimation这个框架的作用什么,它跟UIKit的关系是什么?
引用计数
ARC方案的原理是什么?它是在什么时候做的隐式添加release操作?
循环引用有哪些场景,如何避免?
为什么当我们在使用block时外面是weak 声明一个weakSelf,还要在block内部使用strong再持有一下?
Autoreleasepool是实现机制是什么?它是什么时候释放内部的对象的?它内部的数据结构是什么样的?当我提到哨兵对象时,会继续问哨兵对象的作用是什么,为什么要设计它?
哪些对象会放入到Autoreleasepool中?
weak的实现原理是什么?当引用对象销毁是它是如何管理内部的Hash表的?(这里要参阅weak源码)
Runtime
消息发送的流程是怎样的?
关联对象时什么情况下会导致内存泄露?
消息转发的流程是什么?
category能否添加属性,为什么?能否添加实例变量,为什么?
元类的作用是什么?
类方法是存储到什么地方的?类属性呢?
讲几个runtime的应用场景
Runloop
讲一下对Runloop的理解?
可以用Runloop实现什么功能?
性能优化
对TableView进行性能优化有哪些方式?
Xcode的Instruments都有哪些调试的工具?
讲一下你做过的性能优化的事情。
如何检测卡顿,都有哪些方法?
缩小包体积有哪些方案?
简历相关问题
Lottie实现动画效果的原理是什么?
OClint实现静态分析的原理是什么,它是如何做到的?
MVVM和MVC有什么区别?
静态库和动态库的区别是什么?
了解Flutter吗?它有没有使用UIKit?它是如何渲染UI的?
二进制重排的核心依据是什么?
如何设计一套切换主题的方案?
AVPlayer和IJKPlayer有什么区别?用IJKPlayer如何实现一个缓存视频列表每条视频前1s的内容?
类似微博的短视频列表,滑动停留播放,如何实现?
使用python做过哪些事?如何理解脚本语言?
软技能
做过哪些工作职责之外的事情?
经历过最难的一次业务开发是什么样的,最终怎么解决的?
最近有学习什么新技术吗?有何收获?
你最擅长iOS哪方面的知识?怎么体现出来的?
常用哪些开源库,有没有研究过他们的原理?
如何保持个人成长?
通过这些面试题,我们可以看出一些面试官的风格:
1、面试官更喜欢“刨根问底”,对着一个概念不断的往深处延展,不断深入的问。这类问题会有很大的区分度,第一问第二问第三问难度逐次提高,用于筛选不同的面试者。这也提醒我们某些知识点不光要知道原理,还要知道为什么这么设计,这么设计的好处是什么。
2、问题范围更全面化,特别是二面时,问题不再局限于iOS端,而是更通用的计算机方向问题,这个需要我们平常多积累;还有就是开始重视个人软技能,学习能力和上进心。
3、注重软技能,这个比前面2条作用稍微小些,但是如果被问到了,而我们也有很好的贴合点,那绝对就是加分项。
好啦,以上便是关于2022年IOS面试题的全部风向,更多关于IOS的内容干货可关注慕课网~