感谢您的点击,为表达诚意,结尾有福利,嘿嘿!
腾讯社招iOS面试记录
毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试。具体部门这边就不说了。这次面试还是收获到了很多。
一面电话面试:
面试官主要是针对iOS相关的基础问题。
* 先简单自我介绍一下自己
* 对mrc和arc的理解
* 谈谈对自动释放池的理解
* 自动释放池在mrc和arc区别
* 多层自动释放池嵌套的对象在哪一层释放
* 对于block,理解,mrc和arc下有什么区别,使用注意事项
* 对于深拷贝和浅拷贝的理解
* 对于strong weak,atomic等等理解
* weak原理
* 如果属性完全不加修饰词入weak,atomic,系统会怎么处理
* 简述下block的实现
* 描述下IM系统如何保证消息不丢
* IM数据库如何设计表
* C++引用和指针有什么区别
* Http协议30x的错误是什么
* 谈谈你懂runloop得理解:由浅入深
* 谈谈对多线程理解:由浅入深
* 谈谈category和extension区别,系统如何底层实现category
* 谈谈消息转发机制实现
* 谈谈事件响应链,如何响应view之外的事件
* 界面性能优化
> 整个面试大约1个半小时。整体上,回答的还算OK,自动释放池这块,不够清楚底层实现。另外atomic是在属性没有写的情况下系统默认的。Block的底层实现也表达的不够准确。
一面之后过了几天,给了二面通知。
二面视频面试:
这次面试官相对于一面,更加侧重于过往项目。
1.开头都是简短的自我介绍
2.聊一聊过往项目中你觉得收获最大的一个模块。
突然遇到这个问题,心理是有点懵逼的呀,我不禁反想了一下,过去这些个项目,零零散散收获了不少知识和经验,可是具体到哪一个模块,完整的思考还是没有过的。
答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。
不得不惊叹腾讯的面试官的逻辑条理,很快抓住了问题的本质。
需求痛点:界面卡顿,体验不好
解决方案:探索的思路-》解决方案。
该模块引申到的新话题还涉及到了增量更新,内存缓存,本地缓存。
细节上还谈到了富文本绘制,Coretext框架的使用,哎,说来惭愧,上次使用coretext已经是两年前,连框架的核心API都已经不记得了。再加上项目中使用的是YYLabel的开源框架。最后只能凭借印象大概说了下绘制的流程,其实面试官都是由浅入深的,如果这边回答的不够深入。那么后面也就不会有更深入的探讨了。
- 上个项目中存在视频裁剪,录制等功能。面试官对这块有些兴趣,就聊到了视频裁剪的实现,因为我们项目中使用了ffmpeg做的裁剪功能。包括视频下载,数据裁剪封装,引申聊到了边预览边裁剪,因为我之前的项目并没有做到预览裁剪这块。也就没有深入聊下去了。期间简单谈到了rstp协议,和HLS,rtmp等协议的对比,信令协议。虽然之前都有看过协议的大致实现和预览,但是实际使用的是SDK,没有实践加持。这部分知识是很容易忘记的。大致聊了下总体差别。
- 项目中有用到过DLNA投屏协议,说来又是惭愧,自己完整做过的项目,过去了两年,居然连流程,协议都只是零零散散的记起来了,很勉强的说出了大概实现流程。知道最后才记起来是soap协议。当初为了做这个可是研究了整整两周的。面试官应该也实现过这个需求,提到了视频盒子断线如何检测做处理,什么原因导致的。由于之前我们的产品需求比较简单,没有特别完善。这里我也只能说了大概。
- 项目做过视频播放需求,使用的AVPlayer框架(重点聊)面试官问到,AVPlayer怎么监听视频缓冲状态的,有哪几种状态。说来又是惭愧,我只记得是KVO监听的。具体的API已经记不清了。接着面试官问到这个需求遇到过哪些坑,怎么解决的。这个还真的有,首先是回调播放进度在拖动时候错乱,加载某些小视频的适配,首帧出图很慢。KVO的模式不灵活。缓冲进度不受我们控制。短视频可能直接迅速缓冲到底。还是之前的思路,需求痛点有了
- 解决方案:探索的思路-》解决方案。
- 不得不说之前做的产品,都是需求驱动,解决了需求,很多时候就没有极客精神,在深入的去探讨。这块真的是差!
发散问到了:如果网络不好,首帧出图之后,如何优化后续播放不卡顿 当时已经一脸懵逼了:就提到了可以适当加大缓冲区,等到足够的I帧数据再开始播放。
甚至连常规的码率切换思路都没想到。作为做音视频相关产品的我太不应该了。
- 项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。
- 最后给出了一个非常有意思的算法题
> 有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒
> 答:开始我想到的是常规思路二分法,717,和面试官说了,发现四只老鼠根本不够,面试官友好的提示从老鼠面去想,这时候很快想到了一个老鼠有死和不死,也就0和1两个状态,四只老鼠有16个组合,正好是足够的。但是怎么分配瓶子,还没想好,演算了一会儿,因为面试官这边时间有限,就说思路是正确的。下面有兴趣在看怎么分哈。面试就到此结束了。
二面持续了大约一个小时多一点。 二面自己感觉了很多欠缺,不够深入。
面试总结
腾讯的面试官都非常的友好,逻辑性非常强。综合素质很高。面试过程中虽然针对的都是技术问题,但是考察的包含了逻辑思维和产品思维以及沟通能力等综合素质。特别是二面。
认识到了自己的不足:
1. 不够极客精神:还是需求驱动,之前的项目很多设计优化因为对产品的需求没有那么高精度,遇到痛点的时候:仅仅做了初步的探讨,没有形成完整的闭环,
往往是做了一定的优化满足了需求就结束整个过程了。这对于自我的成长是很不好的。比如一个API了解到百分之70,没有到100.
2. 已有项目知识面深度不够:项目中使用到了某些API,第一反应是先去看Demo,完成需求,事实上例如仅仅是一个简单视频播放,可能调用API很简单就可以做到,但是中间包含的却很多,从网络协议,到视频解封装,编解码,渲染。音频编解码播放。
虽然每个环节都有去学习,也都知道流程,但是这是不够。要深入进去。即使自己的项目没有这块实践需求。也要自我驱动去做。
3.自我总结欠缺:以前都是浑浑噩噩的快乐开发,也自学了不少。每个项目,或者每个自我学习的过程走一段,都应该站在更高点去总结一下。
例如项目,要站在产品角度,自我学习,要站在整体框架角度。否则学习到的东西一段时间不用就忘记了。高度也不够。没有完全消化透。感觉什么都懂一些,但是什么都差一点火候
怎么改善提高
- 多写Blog分享,东西会做,和能写出来是两个层面。即使网上已经有很多实现了。消化好之后,用自己的思路表达出来,也有很大提高
- 遇到问题,无论是项目还是自己实践,都要多问几个为什么,不能浅尝辄止,站在产品角度。从原理层面理解问题,最重要是给出解决问题方案。demo不等于工程。
- 阶段性总结知识点。古语: 学而时习之。
反思了很多:也清楚认识到自己的一些优点,有技术热情,爱好学习。很好的逻辑思维。沟通能力。相信只要坚持努力。一定能获得好的结果。也给自己打打气。共勉之。
小编整理了一些比较知名大厂的面试题以及答案总结,还有一些比较常用的学习资料,需要的可以自行下载的哦,企鹅裙号:551346706!
相关推荐
本文详细分析了2023年7月抖音平台上美妆品牌「里季、VC美妆、娇润泉」的社媒营销和电商业绩。通过对销售额、直播销售、视频销售、热门商品、粉丝画像等方面的深入剖析,揭示了各品牌在抖音平台的成功之道。里季凭借创始人紫橙董事长的直播带货取得显著成绩,VC美妆则依靠素颜霜爆款和品牌自播,娇润泉通过洁面乳和精华液的推广,借助尾部达人视频切片和头部达人直播实现销售增长。
1、文件说明: Centos8操作系统subscription-manager-rhsm-certificates-1.28.21-3.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf subscription-manager-rhsm-certificates-1.28.21-3.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
内容概要:本文详细介绍了力士乐驱动调试软件13v16中文版的特点及其在伺服驱动和液压同步调试中的应用。软件具有中文界面,便于理解和操作,涵盖参数设置、监控、诊断和调试四大模块。参数设置模块支持通过输入数值或拖动滑块调整电机速度和加速度;监控模块提供实时数据监测和图表展示;诊断模块帮助排查和解决问题;调试模块适用于高级调试如PID参数调整。此外,文中还分享了多个实用技巧,如批量修改参数、故障代码速查、动态链接库调用等。 适合人群:从事工业自动化、机电一体化领域的工程师和技术人员,尤其是对伺服驱动和液压控制系统有一定经验的人群。 使用场景及目标:①用于伺服驱动系统的调试,确保电机参数正确配置和稳定运行;②用于液压同步控制项目的调试,提高同步精度;③通过丰富的案例和技巧分享,帮助用户高效解决常见问题,提升工作效率。 其他说明:本文不仅介绍了软件的基本功能,还深入探讨了实际调试过程中的一些经验和技巧,为用户提供全面的指导和支持。
计算机绘图-讲稿.pdf
计算机二级access历年真题及讲解.pdf
计算机复习小结.pdf
1、文件说明: Centos8操作系统stubby-0.4.2-2.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf stubby-0.4.2-2.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
计算机二级C语言历年真题.pdf
内容概要:本文详细介绍了一种利用ELMAN神经网络对红酒数据集进行分类的方法及其MATLAB实现。首先介绍了红酒数据集的特点以及数据预处理步骤,包括数据读取、特征提取、归一化等。接着阐述了ELMAN神经网络的基本概念及其在处理时间序列和模式识别方面的优势。随后展示了如何在MATLAB中创建、配置和训练ELMAN神经网络,包括设置网络结构、选择合适的训练参数等。最后通过评估模型性能,计算分类准确率,并绘制混淆矩阵来展示实验结果。此外还提供了代码优化建议,如调整网络参数、改进数据处理方法等。 适合人群:对机器学习尤其是神经网络感兴趣的初学者,以及有一定MATLAB编程基础的研究人员。 使用场景及目标:适用于想要了解ELMAN神经网络的工作原理及其应用的人群;希望通过具体案例掌握如何使用MATLAB实现神经网络建模和训练的技术人员。 其他说明:文中提供的代码可以直接运行,用户可根据自身需求修改数据源、调整网络参数等,从而应用于不同的分类任务。同时,对于非时序数据也可以考虑采用其他类型的神经网络以提高效率。
数据结构C/C++实现代码,供参考学习,练习,用于面试考试
内容概要:本文详细介绍了Halcon与C#联合开发的一个稳定版本的工业视觉框架。首先强调了环境配置的重要性,确保Halcon的runtime版本与开发环境一致,避免常见的dll版本不匹配问题。接着阐述了图像处理流水线的设计,利用Task+async/await提高效率并避免界面卡顿。文中展示了如何通过状态机实现流程引擎,使配置文件定义处理步骤更加灵活。此外,文章深入探讨了内存管理和异常处理的最佳实践,如使用using语句确保HRegion对象正确释放,以及将Halcon的错误码转化为易读信息。最后,作者分享了一些实用技巧,如通过WCF实现算法和服务化通信,以及提供了一个PCB板检测的Demo项目作为实例。 适合人群:具有一定编程基础,尤其是熟悉C#和Halcon的开发人员,以及从事工业视觉项目的工程师。 使用场景及目标:适用于希望深入了解Halcon与C#联合开发的工业视觉框架的技术人员。主要目标是帮助读者掌握图像处理流程、内存管理、异常处理等方面的知识,从而能够构建高效稳定的工业视觉系统。 其他说明:文中提供了大量代码片段和实践经验,有助于读者更好地理解和应用相关技术。同时,提醒读者在实际开发过程中需要注意的一些常见问题及其解决方案。
计算机二级笔试(选择)真题及答案.pdf
源码
内容概要:本文探讨了在机械模型设计中如何利用技术交底书进行创新。文章首先解释了技术交底书的概念及其重要性,接着通过具体的代码示例展示了如何在机械臂设计中引入动态调整算法以提高性能和效率。此外,文章介绍了如何使用Python和YAML等工具将机械模型的参数化设计与技术交底书相结合,实现了自动化更新和版本控制。最后,文章强调了在设计过程中发现并解决具体问题的重要性,如渐开线参数修形、轨迹预测算法优化以及模块化参数系统的应用。 适合人群:机械工程师、软件开发者、项目经理和技术文档撰写人员。 使用场景及目标:适用于机械模型设计项目的各个阶段,旨在提升设计效率、减少错误率、优化性能,并使技术交底书成为动态且易维护的文档。 其他说明:文中提到的技术手段不仅限于特定行业,可以广泛应用于各种涉及复杂机械系统的工程项目中。同时,文章鼓励跨学科合作,如机械工程与编程的结合,以实现更高效的解决方案。
内容概要:本文详细记录了作者在Cadence平台中完成一个两级放大电路版图设计的过程,涵盖了从初步设计到最终通过LVS(Layout vs Schematic)和DRC(Design Rule Check)验证的所有步骤。文章首先介绍了电路的基本结构和参数设定,如共源放大器和共栅放大器的关键参数调整,以及在Virtuoso环境中进行的具体操作。接着,作者分享了在版图绘制过程中遇到的各种挑战及其解决方案,包括晶体管尺寸优化、走线布局、寄生参数控制、金属层间距调整等。此外,还特别强调了LVS和DRC验证中的常见问题及应对策略,如端口不匹配、器件参数偏差、金属密度规则等。最后,作者总结了一些实用的设计技巧和注意事项,为后续类似项目提供了宝贵的经验。 适合人群:从事集成电路设计的专业人士,尤其是对模拟电路版图设计感兴趣的工程师和技术爱好者。 使用场景及目标:帮助读者掌握Cadence环境下两级放大电路版图设计的方法,提高LVS和DRC验证的成功率,减少设计周期内的返工次数,提升设计效率。 其他说明:文中提到的具体数值和代码片段仅供参考,在实际应用中需要根据具体的工艺规则和个人需求进行适当调整。
内容概要:本文详细介绍了如何利用西门子S7-200 PLC的指针操作来高效地进行数据统计,具体包括求平均值、最大值和最小值的方法。文中提供了完整的代码示例,涵盖了从初始化、循环处理到最终结果输出的全过程。此外,还讨论了指针操作的优势以及一些常见的注意事项,如数据类型的正确处理、防止溢出等。文章强调了指针操作在批量数据处理中的高效性和灵活性,特别是在工控项目中的应用价值。 适合人群:从事工业自动化控制系统的开发人员,尤其是对西门子S7-200 PLC有一定了解的技术人员。 使用场景及目标:适用于需要频繁处理大量数据的工控项目,如温度采集、压力波动分析等。通过掌握本文介绍的方法,开发者能够提高数据处理效率,减少代码复杂度,并确保程序的稳定性和可靠性。 其他说明:文章不仅提供了具体的编程技巧,还分享了许多实践经验,帮助读者更好地理解和应用这些技术。同时提醒读者在实际操作中应注意的一些潜在问题,如数据类型匹配、指针越界等。
1、文件说明: Centos8操作系统subunit-perl-1.4.0-14.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf subunit-perl-1.4.0-14.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
C++相关书籍,计算机相关书籍,linux相关及http等计算机学习、面试书籍。
无线猫灵5g随身WiFi R106_1.268.4_EQ100 优化更新!