2022年 iOS面试题总结

article/2025/8/20 1:20:54

前言

都说今年互联网行情很差,iOS行情更差。但到底怎么样呢,不能光听别人说,而要自己走出去看一看。我的面试的阶段基本都在3月份,准备的阶段则要再往前推个半个月吧。期间约到了不少一二线互联网公司面试机会,前期由于准备不足也错失了一些机会,在之后的面试中不断总结经验,越来越有信心了,最终选择了爱奇艺。整体来看求职情况还算可以,不是很好但也不是很差,其中会带有一定运气成分,所以要换工作的话一定不要裸辞。

计算机网络

  • 简述从输入网址到浏览器显示的过程
  • TCP为什么是三次握手四次挥手
  • TCP如何保障数据包有效
  • HTTP和HTTPS的区别
  • TCP与UDP区别
  • 微信发文件用什么协议
  • OSI的七层架构以及每一层都有哪些协议
  • 所知道的HTTP请求头和返回码

操作系统

  • 进程与线程的区别*2,什么可以公用什么不能公用
  • CPU执行单位
  • 堆与栈的区别
  • 内核态和用户态的划分与切换
  • 虚拟地址怎么映射到物理地址
  • 简述IO多路复用
  • 简述进程通信的各种方法
  • 线程有几种状态
  • 死锁的产生条件,如何检查,如何解决
  • 文件描述符fd是线程私有还是公有

数据库

  • 简述关系型数据库与非关系型数据库的区别与联系
  • 简述数据库的事务
  • 如何在hibernate中查看原始的sql语句
  • MySQL事务隔离级别分别有哪些
  • 分库分表的依据是什么,有用到什么工具
  • 数据库索引的原理
  • 上万/十万用户查询数据库的场景如何设计
  • 建表语句怎么写
  • char和varchar区别
  • Innodb和Myisam存储引擎的区别
  • 修改表的字段的语句,会上锁吗
  • 什么时候上行锁
  • 聚集索引和非聚集索引,非聚集索引做什么
  • 索引有哪几种
  • 一个表同时有ID和UUID,用哪个当主键(索引)-用ID,因为ID是顺序的,而UUID是乱序的,需要经常调整B+树的结构
  • B+树的结构是如何调整的-某个节点存的数据>一个阈值后会调整结构
  • 什么时候会创建新的分支
  • 一页存多少数据

设计模式

  • 线程安全是如何做到的
  • Java中IO包下的inputstream用了什么设计模式
  • 简述知道的设计模式
  • 手写单例模式,应用场景
  • Java
  • 简述AOP和IOC的作用
  • Java中所有类的父类是什么,都有什么方法,请列举
  • JVM内存的分布,不同版本之间有区别么
  • wait和sleep分别属于哪个类的方法
  • lock和synchronized的区别
  • 什么样的任务适合用多线程,以及什么适合单线程
  • ArrayList和LinkList的区别

数据结构

  • HashMap的底层实现,如何解决哈希冲突
  • 二叉树有哪些遍历方式,应用的场景都有哪些
  • 快排实现的原理
  • 对堆排序有了解么,堆排序的空间复杂度为什么是O(1)
  • socket
  • select和epoll的区别*2
  • epoll被通知的话,怎么知道是哪个文件描述符准备好了
  • Zookeeper
  • Zookeeper是做什么用的
  • Zookeeper选举流程
  • Zookeeper处理过程

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做过哪些事?如何理解脚本语言?

数据结构与算法

  • 什么是Hash表,什么是Hash碰撞,解决Hash碰撞有什么方法?
  • 如何遍历二叉树?
  • 简述下快速排序的过程,时间复杂度是多少?
  • 有一个整数数组,如何只遍历一遍就实现让该数组奇数都在前面,偶数都在后面?
  • 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。leetcode
  • 有红、黄、蓝三种颜色的气球。在牛客王国,1个红气球+1个黄气球+1个蓝气球可以兑换一张彩票。

2个红气球+1个黄气球可以兑换1个蓝气球。

2个黄气球+1个蓝气球可以兑换1个红气球。

2个蓝气球+1个红气球可以兑换1个黄气球。

现在牛牛有a个红气球,b个黄气球, c个蓝气球,牛牛想知道自己最多可以兑换多少张彩票。

软技能

  • 做过哪些工作职责之外的事情?
  • 经历过最难的一次业务开发是什么样的,最终怎么解决的?
  • 最近有学习什么新技术吗?有何收获?
  • 你最擅长iOS哪方面的知识?怎么体现出来的?
  • 常用哪些开源库,有没有研究过他们的原理?
  • 如何保持个人成长?

流程型问题

流程性问题基本都会包含下面四个,最好提前准备好

1、请做下自我介绍。

2、你有什么问题要问我的吗?

3、为什么离职?

4、对下份工作的期望是什么样的?

总结

通过这些面试题,我们可以看出一些端倪。

1、面试官更喜欢“刨根问底”,对着一个概念不断的往深处延展,不断深入的问。这类问题会有很大的区分度,第一问第二问第三问难度逐次提高,用于筛选不同的面试者。这也提醒我们某些知识点不光要知道原理,还要知道为什么这么设计,这么设计的好处是什么。

2、问题范围更全面化,特别是二面时,问题不再局限于iOS端,而是更通用的计算机方向问题,这个需要我们平常多积累;还有就是开始重视个人软技能,学习能力和上进心。

3、围绕简历,还记得上面说过写简历时要吹牛逼吗。在面试的时候一定要把他们成为自己真正掌握的知识。

4、注重软技能,这个比前面几条作用稍微小些,但是如果被问到了,而我们也有很好的贴合点,那绝对就是加分项。我的一次经历是,当我向面试官说自己有写博客的习惯,他问我是否知道medium,我说知道,还翻译过几篇里面的文章,接着说了些我理解的国内外博客平台的现状分析。这种情况就属于加分项了。

另外面试是一次考察自己知识掌握程度的考核,考的好能提升自己自信心,考的不好可以帮助我们定位自身问题,不管怎么说都是不亏的。面试还可以帮助我们了解市场行情,薪资待遇,自身竞争力,流行技术栈等一系列情况。所以真的建议即使不考虑换工作,每年固定时间也可以出去面试几次。

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

咱们下期见。


http://chatgpt.dhexx.cn/article/VQhmZJH1.shtml

相关文章

iOS面试题(七)

iOS面试题(一) iOS面试题(二) iOS面试题(三) iOS面试题(四) iOS面试题(五) iOS面试题(六) iOS面试题(七) iOS面…

iOS基础面试题(一)

kaikaijia同学私信我,说想加群,我就建个iOS开发群,大家做技术交流和资源,群号:241048287(已满),群号2 :340957379(已满) 群号3:370041534 (已满) 有兴趣的同学可以加群,验证信息:iOS+姓名。 所有的群都已到人数上限,本着“与时俱进”精神,建了个"iOS面试&…

ios面试题总结

本篇主要针对面试题进行解析,会进行基础知识的总结和拓展,仅供参考,如有错误,欢迎指出,一起学习! 一、关于Foundation框架中的问题 (一)NSCache & NSDictionary 1.NSDictiona…

iOS面试题大全2021(附答案)

1、简述你项目中常用的设计模式。它们有什么优缺点? 常用的设计模式有:代理、观察者、单例。 (1)单例:它是用来限制一个类只能创建一个对象。这个对象中的属性可以存储全局共享的数据。所有的类都能访问、设置此单例…

iOS 中高级面试题(附答案)

RunLoop 1、什么是 RunLoop? RunLoop 作用有哪些? RunLoop 可以称之为运行循环,在程序运行过程中循环做一些事情,如果没有 RunLoop 程序执行完毕就会立即退出,有 RunLoop 程序会一直运行,并且时时刻刻在等待用户的输…

安装MyBatis教程

简单安装MyBatis教程 1. 介绍 MyBatis简介 1) MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 3) MyBatis可以使用简单的XML或注解用于配置和原…

mybatis简明教程

mybatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射,本文将让您快速掌握mybatis开发 一: 简介 一只被烤黑了的鸟 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBa…

Mybatis教程-实战

1.从JDBC谈起 1.1.使用IDEA创建maven工程 1.2.引入mysql依赖包 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version> </dependency>1.3.准备数据 创建数据库&a…

SpringBoot使用Mybatis教程

文章目录 新建SpringBoot项目引入mybatis依赖如何使用mybatis&#xff1f;1.配置mybatis①.数据库配置②.mybatis相关配置 2.使用mybatis①.创建JavaBean②.创建mapper1).使用注解方式2&#xff09;.使用xml方式 ③.调用 新建SpringBoot项目 本文所使用的代码编辑器为IntelliJ…

MyBatis教程看这一篇就够啦,简单又全面(IDEA版)

目录 一、MyBatis简介 1.1 MyBatis介绍 为什么需要Mybatis&#xff1f; 二、MyBatis框架部署 2.1 创建Maven项目 2.2 在项目中添加MyBatis依赖 2.3 创建MyBatis配置文件 三、MyBatis框架使用 3.1 创建数据表 3.2 创建实体类 3.3 创建DAO接口&#xff0c;定义操作方法 …

MyBatis学习--完整教程

文章目录 MyBatis1、简介1.1 什么是Mybatis1.2 持久化1.3 持久层1.4 为什么需要MyBatis 2、第一个Mybatis程序2.1 搭建环境2.2 创建一个模块2.3 编写代码 3、CURD1. namespace2. select3. Insert4. update5. Delete6. 万能Map7. 模糊查询 4、配置解析1. 核心配置文件2. 环境配置…

mybatis详细教程

文章目录 [toc]1. 概述1.1 什么是Mybatis?1.2 Mybatis 操作数据库的方式1.3 Mybatis 操作数据库的七大步骤?1.4 Mybatis 的开发优点 2. Mybatis 操作数据库具体实现2.1 创建一个数据库表2.2 创建一个maven项目,配置pom.xml文件,导入相关依赖2.3 创建mybatis 核心配置文件2.4 …

MyBatis教程(看这一篇就够了)

一.全面了解Mybatis 环境变量 jdk 8 MySQL 8.0.27maven-3.6.1IDEA 2021.2.2 学习前需要掌握&#xff1a; JDBCMySQLJava基础MavenJunit&#xff08;单元测试&#xff09; 什么是MyBatis Myba是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及…

fsck命令使用

由于错误操作Linux导致系统无法正常开机&#xff0c;系统提示需要checking filesystems。如下图所示&#xff1a; 根据图中提示&#xff0c;先输入root用户密码进入root用户&#xff0c;然后在root用户中执行命令&#xff1a; fsck -f -y /dev/sda2 命令解释&#xff1a; fsc…

linux基本功之fsck命令详解

&#x1f493; 大家好&#xff0c;我是沐风晓月&#xff0c;双一流院校英语计算机双专业在读&#xff1b; &#x1f493; 想要学好Linux&#xff0c;命令是基本功&#xff0c;企业中常用的命令大约200多个&#xff0c;不管是写shell脚本还是管理操作系统&#xff0c;最常用的命…

fsck命令详解

fsck命令来自于英文词组“filesystem check”的缩写&#xff0c;其功能是用于检查与修复文件系统。若系统有过突然断电或磁盘异常的情况&#xff0c;建议使用fsck命令对文件系统进行检查与修复&#xff0c;以防数据丢失。 语法格式&#xff1a;fsck [参数] 文件系统 常用参…

hdfs fsck

转载来自&#xff1a;https://blog.csdn.net/zlfing/article/details/78070951 1.常用指令&#xff1a;打印文件块的位置信息 hdfs fsck /user/hadoop/wkz -files -blocks -locations生产实例&#xff1a;hdfs fsck *文件路径* -list-corruptfileblocks 线上环境降副本后&a…

Linux fsck 机制解析

Linux fsck 机制 0. 概述1. Upstart 方式 (ubuntu 14.04 32bit)1.1 配置fsck启动1.2 配置fsck运行参数1.3 mountall.config1.4 mountall1.5 fsck 2. Systemd 方式 (ubuntu 16.04 64bit)2.1 普通分区的fsck2.2 Root分区的fsck2.3 ext文件系统的限制2.4 强制fsck完整扫描2.5 fsck…

fsck异常

ubuntu 18 开机显示错误。&#xff08;完了&#xff0c;我的数据啊&#xff09; 莫慌&#xff01;&#xff01;&#xff01; 仔细看下报错。 原因大概是上次系统异常断电关机等非正常关机导致 磁盘损坏。 解决方法 fsck -y /dev/sdb6 sdb6为损坏的目标磁盘 修复完 重启就可以了…

Linux磁盘修复命令----fsck

linux下文件信息出现乱码&#xff0c;无法启动服务&#xff0c;也无法删除&#xff0c;改权限等等&#xff0c;那证明你的磁盘已损坏&#xff0c;需要修复&#xff0c;期间不会丢失数据&#xff0c;请放心操作 使用fsck命令修复磁盘时 一定要进入单用户模式去修复 语 法 fsck.…