整体问的不是很难,没有问iOS基础,主要是八股问答,一面完了1分钟后立马发邮件通知通过~等待二面中...
时长:1小时6分钟
1. 自我介绍:5分钟
2. 计算机网络
2.1 讲一下HTTPS的加密过程。
答:TLS四次握手,client hello, server hello,pre-master key,CA证书哈希验证
2.2 HTTP有哪些常见的状态码?
答:2、3、4、5开头的各举几个例子,比较重要的200、301、304、403、404等单独解释
2.3 HTTP中的get和post的区别?
答:get用于读取服务器内容,post则用于更改。
2.4 如果是使用post,可以做get的事情吗?(可以)二者的性能有什么差别?(没答好)
2.5 除了get和post,你还知道哪些HTTP请求方法?
答:put和delete。
3. 操作系统
3.1 你知道哪些常见的锁?简单说一下。
NSLock、NSSpin_lock、os_unfair_lock、NSRecursiveLock、semaphore、信号量、mutex、NSCondition
3.2 你刚刚提到自旋锁会有一个优先级反转,为什么会优先级反转?
答:如果一个低优先级的任务到来,先获取到锁,然后高优先级的任务也想获取该锁,但是获取不到,进入自旋状态;之后,一个中等优先级的任务到来,他不需要获取这个锁,因此会被CPU调度执行。但是高优先级的任务仍然在等待锁。
3.3 系统有什么办法来避免优先级反转?
答:让低优先级线程在获得同步资源的时候(如果有高优先级的线程也需要使用该同步资源时),临时提升其优先级。处理完成后,回退优先级。
4. 设计模式
4.1 你知道哪些设计模式?
答:iOS中用的最多的是代理模式和观察者模式。除此还有工厂模式、装饰模式、命令模式等。
5. 在你介绍的三个项目中挑一个,讲一下遇到了哪些困难?如何解决的?
6. 手撕,力扣原题——判断一个地址是否为ipv4.(面试官:好,那咱们就做一个简单一点的题目吧!我心里:这叫简单???)
7. 反问
7.1 您iOS部门主要负责哪些业务?
主要负责小红书界面的搭建和优化,以及跨端的融合。
7.2 您对于iOS发展有什么样的看法?
答:未来的路不是很好说,但是现在会和前端进行融合,也是一个大趋势吧。