<div class="iteye-blog-content-contain" style="font-size: 14px;">
<p>感谢您的点击,为表达诚意,结尾有福利,嘿嘿!</p>
<p> </p>
<p><strong>腾讯社招iOS面试记录</strong></p>
<p> </p>
<p>毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试。具体部门这边就不说了。这次面试还是收获到了很多。</p>
<p> </p>
<p><strong>一面电话面试:</strong></p>
<p> </p>
<p>面试官主要是针对iOS相关的基础问题。</p>
<p> </p>
<p>* 先简单自我介绍一下自己</p>
<p>* 对mrc和arc的理解</p>
<p>* 谈谈对自动释放池的理解</p>
<p>* 自动释放池在mrc和arc区别</p>
<p>* 多层自动释放池嵌套的对象在哪一层释放</p>
<p>* 对于block,理解,mrc和arc下有什么区别,使用注意事项</p>
<p>* 对于深拷贝和浅拷贝的理解</p>
<p>* 对于strong weak,atomic等等理解</p>
<p>* weak原理</p>
<p>* 如果属性完全不加修饰词入weak,atomic,系统会怎么处理</p>
<p>* 简述下block的实现</p>
<p>* 描述下IM系统如何保证消息不丢</p>
<p>* IM数据库如何设计表</p>
<p>* C++引用和指针有什么区别</p>
<p>* Http协议30x的错误是什么</p>
<p>* 谈谈你懂runloop得理解:由浅入深</p>
<p>* 谈谈对多线程理解:由浅入深</p>
<p>* 谈谈category和extension区别,系统如何底层实现category</p>
<p>* 谈谈消息转发机制实现</p>
<p>* 谈谈事件响应链,如何响应view之外的事件</p>
<p>* 界面性能优化</p>
<p> </p>
<p>> 整个面试大约1个半小时。整体上,回答的还算OK,自动释放池这块,不够清楚底层实现。另外atomic是在属性没有写的情况下系统默认的。Block的底层实现也表达的不够准确。</p>
<p> </p>
<p>一面之后过了几天,给了二面通知。</p>
<p> </p>
<p><strong>二面视频面试:</strong></p>
<p> </p>
<p>这次面试官相对于一面,更加侧重于过往项目。</p>
<p> </p>
<p>1.开头都是简短的自我介绍 </p>
<p>2.聊一聊过往项目中你觉得收获最大的一个模块。</p>
<p> </p>
<p><strong>突然遇到这个问题,心理是有点懵逼的呀,我不禁反想了一下,过去这些个项目,零零散散收获了不少知识和经验,可是具体到哪一个模块,完整的思考还是没有过的。</strong></p>
<p> </p>
<p>答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。</p>
<p> </p>
<p>不得不惊叹腾讯的面试官的逻辑条理,很快抓住了问题的本质。</p>
<p> </p>
<p>需求痛点:界面卡顿,体验不好</p>
<p> </p>
<p>解决方案:探索的思路-》解决方案。</p>
<p> </p>
<p>该模块引申到的新话题还涉及到了增量更新,内存缓存,本地缓存。</p>
<p> </p>
<p>细节上还谈到了富文本绘制,Coretext框架的使用,哎,说来惭愧,上次使用coretext已经是两年前,连框架的核心API都已经不记得了。再加上项目中使用的是YYLabel的开源框架。最后只能凭借印象大概说了下绘制的流程,其实面试官都是由浅入深的,如果这边回答的不够深入。那么后面也就不会有更深入的探讨了。</p>
<p> </p>
<ul>
<li>上个项目中存在视频裁剪,录制等功能。面试官对这块有些兴趣,就聊到了视频裁剪的实现,因为我们项目中使用了ffmpeg做的裁剪功能。包括视频下载,数据裁剪封装,引申聊到了边预览边裁剪,因为我之前的项目并没有做到预览裁剪这块。也就没有深入聊下去了。期间简单谈到了rstp协议,和HLS,rtmp等协议的对比,信令协议。虽然之前都有看过协议的大致实现和预览,但是实际使用的是SDK,没有实践加持。这部分知识是很容易忘记的。大致聊了下总体差别。</li>
</ul>
<ul>
<li>项目中有用到过DLNA投屏协议,说来又是惭愧,自己完整做过的项目,过去了两年,居然连流程,协议都只是零零散散的记起来了,很勉强的说出了大概实现流程。知道最后才记起来是soap协议。当初为了做这个可是研究了整整两周的。面试官应该也实现过这个需求,提到了视频盒子断线如何检测做处理,什么原因导致的。由于之前我们的产品需求比较简单,没有特别完善。这里我也只能说了大概。</li>
</ul>
<ul>
<li>项目做过视频播放需求,使用的AVPlayer框架(重点聊)面试官问到,AVPlayer怎么监听视频缓冲状态的,有哪几种状态。说来又是惭愧,我只记得是KVO监听的。具体的API已经记不清了。接着面试官问到这个需求遇到过哪些坑,怎么解决的。这个还真的有,首先是回调播放进度在拖动时候错乱,加载某些小视频的适配,首帧出图很慢。KVO的模式不灵活。缓冲进度不受我们控制。短视频可能直接迅速缓冲到底。还是之前的思路,需求痛点有了</li>
</ul>
<ul>
<li>解决方案:探索的思路-》解决方案。</li>
<li>不得不说之前做的产品,都是需求驱动,解决了需求,很多时候就没有极客精神,在深入的去探讨。这块真的是差!</li>
</ul>
<p>发散问到了:如果网络不好,首帧出图之后,如何优化后续播放不卡顿 当时已经一脸懵逼了:就提到了可以适当加大缓冲区,等到足够的I帧数据再开始播放。</p>
<p> </p>
<p>甚至连常规的码率切换思路都没想到。作为做音视频相关产品的我太不应该了。</p>
<p> </p>
<ul>
<li>项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。</li>
</ul>
<ul>
<li>最后给出了一个非常有意思的算法题</li>
</ul>
<p> </p>
<p>> 有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒</p>
<p>> 答:开始我想到的是常规思路二分法,717,和面试官说了,发现四只老鼠根本不够,面试官友好的提示从老鼠面去想,这时候很快想到了一个老鼠有死和不死,也就0和1两个状态,四只老鼠有16个组合,正好是足够的。但是怎么分配瓶子,还没想好,演算了一会儿,因为面试官这边时间有限,就说思路是正确的。下面有兴趣在看怎么分哈。面试就到此结束了。</p>
<p> </p>
<p>二面持续了大约一个小时多一点。 二面自己感觉了很多欠缺,不够深入。</p>
<p> </p>
<p><strong>面试总结</strong></p>
<p> </p>
<p>腾讯的面试官都非常的友好,逻辑性非常强。综合素质很高。面试过程中虽然针对的都是技术问题,但是考察的包含了逻辑思维和产品思维以及沟通能力等综合素质。特别是二面。</p>
<p> </p>
<p><strong>认识到了自己的不足:</strong></p>
<p> </p>
<p>1. 不够极客精神:还是需求驱动,之前的项目很多设计优化因为对产品的需求没有那么高精度,遇到痛点的时候:仅仅做了初步的探讨,没有形成完整的闭环,</p>
<p> </p>
<p>往往是做了一定的优化满足了需求就结束整个过程了。这对于自我的成长是很不好的。比如一个API了解到百分之70,没有到100.</p>
<p> </p>
<p>2. 已有项目知识面深度不够:项目中使用到了某些API,第一反应是先去看Demo,完成需求,事实上例如仅仅是一个简单视频播放,可能调用API很简单就可以做到,但是中间包含的却很多,从网络协议,到视频解封装,编解码,渲染。音频编解码播放。</p>
<p> </p>
<p>虽然每个环节都有去学习,也都知道流程,但是这是不够。要深入进去。即使自己的项目没有这块实践需求。也要自我驱动去做。</p>
<p> </p>
<p>3.自我总结欠缺:以前都是浑浑噩噩的快乐开发,也自学了不少。每个项目,或者每个自我学习的过程走一段,都应该站在更高点去总结一下。</p>
<p> </p>
<p>例如项目,要站在产品角度,自我学习,要站在整体框架角度。否则学习到的东西一段时间不用就忘记了。高度也不够。没有完全消化透。感觉什么都懂一些,但是什么都差一点火候</p>
<p> </p>
<p><strong>怎么改善提高</strong></p>
<p> </p>
<ul>
<li>多写Blog分享,东西会做,和能写出来是两个层面。即使网上已经有很多实现了。消化好之后,用自己的思路表达出来,也有很大提高</li>
<li>遇到问题,无论是项目还是自己实践,都要多问几个为什么,不能浅尝辄止,站在产品角度。从原理层面理解问题,最重要是给出解决问题方案。demo不等于工程。</li>
<li>阶段性总结知识点。古语: 学而时习之。</li>
</ul>
<p><strong>反思了很多:也清楚认识到自己的一些优点,有技术热情,爱好学习。很好的逻辑思维。沟通能力。相信只要坚持努力。一定能获得好的结果。也给自己打打气。共勉之。</strong></p>
<p> </p>
<p><strong>小编整理了一些比较知名大厂的面试题以及答案总结,还有一些比较常用的学习资料,需要的可以自行下载的哦,企鹅裙号:551346706!</strong></p>
</div>
分享到:
相关推荐
美团GCD面试题分析!这个我们熟悉又陌生的GCD,面试已经成了必问的内容!如何在面试过程中披荆斩棘,也成了我们现在iOS开发一个非常重要的话题!这一节课非常值得你来听!!!
iOS开发精选面试题+答案题集 阿里字节IOS面试题问题及答案 大厂常问IOS面试题 精选最新iOS面试题全面解析 iOS开发精选面试题+答案题集 阿里字节IOS面试题问题及答案 大厂常问IOS面试题 精选最新iOS面试题全面解析 ...
在iOS开发领域,面试是检验开发者技能和知识深度的重要环节。这份"2018最新iOS面试题全集"无疑是iOS开发者提升自我、准备面试的关键参考资料。以下将根据标题、描述以及标签,深入探讨其中可能包含的重要知识点。 ...
在iOS开发领域,面试是求职者展示技能和经验的关键环节,尤其对于想要进入阿里巴巴、腾讯等顶级互联网公司的开发者来说,准备充分至关重要。本资源包包含了针对iOS面试的一些核心知识点,旨在帮助开发者提升面试表现...
这份"各个大厂--iOS开发精品面试题 题集大全.zip"压缩包显然包含了各大知名公司对iOS开发者的常见面试问题,可以帮助求职者准备面试,提升自身的竞争力。本文将深入探讨其中可能涉及的知识点,包括Objective-C和...
在iOS开发领域,面试往往涉及广泛的技能和知识体系,涵盖了Objective-C、Swift编程语言、UIKit框架、内存管理、多线程、网络编程、数据结构与算法、设计模式等多个方面。以下将结合标题“iOS开发大厂面试经历”及...
iOS开发试题大全:笔试面试一千题,包含1000道iOS试题和参考答案,题型包含:判断题、单选题,多选题和面试题。分为这套资料共分为"语法","常识","界面","iOS","操作","数据结构","多线程","网络","多媒体","安全"十...
- **专业技术问题**:针对Java、前端、安卓和iOS的开发,面试官会提出具体的技术问题,如Java的多线程、内存模型,前端的CSS选择器优先级、JavaScript的原型链,iOS的内存管理和KVO等。 - **职业发展**:面试官...
iOS开发试题大全:笔试面试一千题,包含1000道iOS试题和参考答案,题型包含:判断题、单选题,多选题和面试题。分为这套资料共分为"语法","常识","界面","iOS","操作","数据结构","多线程","网络","多媒体","安全"十...
这篇文档主要涵盖的是iOS开发相关的笔试题目,...这些题目综合了iOS开发中的多个重要概念,包括内存管理、并发、运行时机制、数据结构、网络通信和数据库操作,对于准备面试或笔试的iOS开发者来说是非常有价值的练习。
《iOS官方开发手册》是苹果公司为iOS应用开发者提供的权威指南,它涵盖了从入门到精通的所有关键知识点。作为iOS开发的基石,这份手册是每个开发者不可或缺的参考资料。下面,我们将详细探讨其中的主要内容。 首先...
iOS开发高级程序员面试题-答案.pdf 这份文件涵盖了iOS开发中的一些高级问题,包括判断题、填空题、简述题和问答题。下面是从这份文件中生成的相关知识点: 判断题 1. UITableView能够绑定多个数据源。(错) ...
在2018年的秋季招聘中,iOS面试成为众多求职者关注的焦点。这个时期的面试不仅反映了当时的iOS技术趋势,也为后来的求职者提供了宝贵的参考经验。以下是对2018年秋招iOS面试中常见知识点的详尽解析: 1. **...
iOS面试知识宝典无水印版.pdf是一本专注于iOS开发相关面试知识点的书籍,覆盖了Objective-C和Swift两种主流的iOS开发语言。这本书适合准备参加iOS开发职位面试的求职者,尤其是那些希望能够全面复习基础知识的应聘者...
综上所述,《iOS程序员面试笔试宝典》是一本全面针对iOS开发岗位求职准备的实用书籍,它不仅提供了丰富的技术知识,还有助于读者在求职过程中提升自己的实战能力和面试技巧,是iOS程序员准备面试的有力工具。
iOS 面试题附答案 本文主要讲解 iOS 面试题的相关知识点,包括类和结构体的区别、GCD 的概念和使用等。 类和结构体的区别 在 Swift 中,类是引用类型,结构体是值类型。值类型在传递和赋值时将进行复制,而引用...
你⽤用哪些办法实现过多线程? GCD和NSOperationQueue的⽐比较,各⾃自优缺点是什么,平时你是怎么使⽤用的? weak,assign,strong的意义和区别? atomic,nonatomic的意义和区别? OC中有没有多继承?...
iOS移动端开发面试题包含了针对iOS开发者在面试过程中可能遇到的一系列专业性问题。这类问题通常涉及多个方面,包括但不限于iOS基础、Swift或Objective-C编程语言、UIKit框架、CoreData、网络通信以及性能优化等。在...
iOS11.3 开发包 解压放到路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
【iOS开发工程师面试题解析】 一、C语言基础 1. 宏MIN的定义:`#define MIN(x, y) ((x) (y) ? (x) : (y))` 2. 程序执行结果:9。*p初始为9,MIN(*p++, b)先计算*p为9,然后*p自增变为10。 3. a) `int a` b) `int ...