腾讯社招ios面试

点击上方“iOS开发”,选择“置顶公众号”

关键时刻,第一时间送达!

640?640?wx_fmt=gif

 

    先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一重,这般进步速度,简直堪称变态啊。

 

    “这楚枫不简单,原来是一位天才,若是让他继续成长下去,绝对能成为一号人物,不过可惜,他太狂妄了,竟与龚师兄定下生死约战,一年时间,他再厉害也无法战胜龚师兄。”有人认识到楚枫的潜力后,为楚枫感到惋惜。

 

    “哼,何须一年,此子今日就必败,巫九与龚师兄关系甚好,早就看他不顺眼了,如今他竟敢登上生死台挑战巫九,巫九岂会放过他?”但也有人认为,楚枫今日就已是在劫难逃。

 

    “何人挑战老子?”就在这时,又是一声爆喝响起,而后一道身影自人群之中掠出,最后稳稳的落在了比斗台上。

 

    这位身材瘦弱,身高平平,长得那叫一个猥琐,金钩鼻子蛤蟆眼,嘴巴一张牙带色儿,说话臭气能传三十米,他若是当面对谁哈口气,都能让那人跪在地上狂呕不止。

 

    不过别看这位长得不咋地,他在核心地带可是鼎鼎有名,剑道盟创建者,青龙榜第九名,正是巫九是也。

 

    “你就是巫九?”楚枫眼前一亮,第一次发现,世间还有长得如此奇葩的人。

 

    巫九鼻孔一张,大嘴一咧,拍着那干瘪的肚子,得意洋洋的道:“老子就是巫九,你挑战老子?”

 

    “不是挑战你,是要宰了你。”楚枫冷声笑道。

 

    “好,老子满足你这个心愿,长老,拿张生死状来,老子今日在这里了解了这小子。”巫九扯开嗓子,对着下方吼了一声。

 

    如果他对内门长老这么说话,也就算了,但是敢这么跟核心长老说话的,他可真是算作胆肥的,就连许多核心弟子,都是倒吸了一口凉气,心想这楚枫够狂,想不到这巫九更狂。

 

    不过最让人无言的就是,巫九话音落下不久,真有一位核心长老自人群走出,缓缓得来到了比斗台上,左手端着笔墨,右手拿着生死状,来到了巫九的身前。

 

    “我去,这巫九什么身份,竟能这般使唤核心长老?”有人吃惊不已,那长老修为不低,乃是元武七重,比巫九还要高两个层次,但却这般听巫九的话,着实让人吃惊不已。

 

    “这你就不知道了吧,巫九在前些时日,拜了钟离长老为师尊,已正式得到钟离长老的亲传。”有人解释道。

 

    “钟离长老?可是那位性情古怪的钟离一护?”

 

    “没错,就是他。”

 

    “天哪,巫九竟然拜入了他的门下?”

 

    人们再次大吃一惊,那钟离一护在青龙宗可是赫赫有名,若要是论其个人实力,在青龙宗内绝对能够排入前三,连护宗六老单打独斗都不会是他的对手。

 

    只不过那钟离一护,如同诸葛青云一样,也是一位客卿长老,所以在青龙宗内只是挂个头衔,什么事都不管,更别说传授宗内弟子技艺了,如今巫九竟然能拜入他老人家门下,着实让人羡慕不已。

 

    “恩怨生死台,的确可以决斗生死,但必须要有所恩怨,你们两个人,可有恩怨?”那位长老开口询问道。

 

 

毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试。具体部门这边就不说了。这次面试还是收获到了很多。

一面电话面试:

面试官主要是针对iOS相关的基础问题。

  1. 先简单自我介绍一下自己

  2. 对mrc和arc的理解

  3. 谈谈对自动释放池的理解

  4. 自动释放池在mrc和arc区别

  5. 多层自动释放池嵌套的对象在哪一层释放

  6. 对于block,理解,mrc和arc下有什么区别,使用注意事项

  7. 对于深拷贝和浅拷贝的理解

  8. 对于strong weak,atomic等等理解

  9. weak原理

  10. 如果属性完全不加修饰词入weak,atomic,系统会怎么处理

  11. 简述下block的实现

  12. 描述下IM系统如何保证消息不丢

  13. IM数据库如何设计表

  14. C++引用和指针有什么区别

  15. Http协议30x的错误是什么

  16. 谈谈你懂runloop得理解:由浅入深

  17. 谈谈对多线程理解:由浅入深

  18. 谈谈category和extension区别,系统如何底层实现category

  19. 谈谈消息转发机制实现

  20. 谈谈事件响应链,如何响应view之外的事件

  21. 界面性能优化

 

整个面试大约1个半小时。整体上,回答的还算OK,自动释放池这块,不够清楚底层实现。另外atomic是在属性没有写的情况下系统默认的。Block的底层实现也表达的不够准确。

一面之后过了几天,给了二面通知。

二面视频面试:

这次面试官相对于一面,更加侧重于过往项目。

1.开头都是简短的自我介绍   2.聊一聊过往项目中你觉得收获最大的一个模块。

突然遇到这个问题,心理是有点懵逼的呀,我不禁反想了一下,过去这些个项目,零零散散收获了不少知识和经验,可是具体到哪一个模块,完整的思考还是没有过的。

 

答: 就说了上个项目做类似朋友圈的优化思路,谈到了空间换时间,缓存,渲染相关的技术点。

不得不惊叹腾讯的面试官的逻辑条理,很快抓住了问题的本质。

需求痛点:界面卡顿,体验不好 解决方案:探索的思路-》解决方案。

该模块引申到的新话题还涉及到了增量更新,内存缓存,本地缓存。

细节上还谈到了富文本绘制,Coretext框架的使用,哎,说来惭愧,上次使用coretext已经是两年前,连框架的核心API都已经不记得了。再加上项目中使用的是YYLabel的开源框架。最后只能凭借印象大概说了下绘制的流程,其实面试官都是由浅入深的,如果这边回答的不够深入。那么后面也就不会有更深入的探讨了。

3.上个项目中存在视频裁剪,录制等功能。 面试官对这块有些兴趣,就聊到了视频裁剪的实现,因为我们项目中使用了ffmpeg做的裁剪功能。包括视频下载,数据裁剪封装,引申聊到了边预览边裁剪,因为我之前的项目并没有做到预览裁剪这块。也就没有深入聊下去了。期间简单谈到了rstp协议,和HLS,rtmp等协议的对比,信令协议。虽然之前都有看过协议的大致实现和预览,但是实际使用的是SDK,没有实践加持。这部分知识是很容易忘记的。大致聊了下总体差别。

 

4.项目中有用到过DLNA投屏协议 说来又是惭愧,自己完整做过的项目,过去了两年,居然连流程,协议都只是零零散散的记起来了,很勉强的说出了大概实现流程。知道最后才记起来是soap协议。当初为了做这个可是研究了整整两周的。面试官应该也实现过这个需求,提到了视频盒子断线如何检测做处理,什么原因导致的。由于之前我们的产品需求比较简单,没有特别完善。这里我也只能说了大概。

 

5.项目做过视频播放需求,使用的AVPlayer框架(重点聊) 面试官问到,AVPlayer怎么监听视频缓冲状态的,有哪几种状态。说来又是惭愧,我只记得是KVO监听的。具体的API已经记不清了。 接着面试官问到这个需求遇到过哪些坑,怎么解决的。 这个还真的有,首先是回调播放进度在拖动时候错乱,加载某些小视频的适配,首帧出图很慢。KVO的模式不灵活。缓冲进度不受我们控制。短视频可能直接迅速缓冲到底。 还是之前的思路 需求痛点有了 解决方案:探索的思路-》解决方案。 不得不说之前做的产品,都是需求驱动,解决了需求,很多时候就没有极客精神,在深入的去探讨。这块真的是差!

 

发散问到了:如果网络不好,首帧出图之后,如何优化后续播放不卡顿 当时已经一脸懵逼了:就提到了可以适当加大缓冲区,等到足够的I帧数据再开始播放。

 

甚至连常规的码率切换思路都没想到。作为做音视频相关产品的我太不应该了。

 

6.项目聊完了之后,又追问了iOS的一些基础问题,属性和成员变量区别,strong,atomic关键字,怎么理解runloop,runloop有几种状态等等。

 

7.最后给出了一个非常有意思的算法题

 

有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒 答:开始我想到的是常规思路二分法,717,和面试官说了,发现四只老鼠根本不够,面试官友好的提示从老鼠面去想,这时候很快想到了一个老鼠有死和不死,也就0和1两个状态,四只老鼠有16个组合,正好是足够的。但是怎么分配瓶子,还没想好,演算了一会儿,因为面试官这边时间有限,就说思路是正确的。下面有兴趣在看怎么分哈。面试就到此结束了。

 

二面持续了大约一个小时多一点。 二面自己感觉了很多欠缺,不够深入。

面试总结

 

腾讯的面试官都非常的友好,逻辑性非常强。综合素质很高。面试过程中虽然针对的都是技术问题,但是考察的包含了逻辑思维和产品思维以及沟通能力等综合素质。特别是二面。

认识到了自己的不足:

1.不够极客精神:还是需求驱动,之前的项目很多设计优化因为对产品的需求没有那么高精度,遇到痛点的时候:仅仅做了初步的探讨,没有形成完整的闭环

 

往往是做了一定的优化满足了需求就结束整个过程了。这对于自我的成长是很不好的。比如一个API了解到百分之70,没有到100.

 

2. 已有项目知识面深度不够:项目中使用到了某些API,第一反应是先去看Demo,完成需求,事实上例如仅仅是一个简单视频播放,可能调用API很简单就可以做到,但是中间包含的却很多,从网络协议,到视频解封装,编解码,渲染。音频编解码播放。

 

虽然每个环节都有去学习,也都知道流程,但是这是不够。要深入进去。即使自己的项目没有这块实践需求。也要自我驱动去做。

 

3.自我总结欠缺:以前都是浑浑噩噩的快乐开发,也自学了不少。每个项目,或者每个自我学习的过程走一段,都应该站在更高点去总结一下。

 

例如项目,要站在产品角度,自我学习,要站在整体框架角度。否则学习到的东西一段时间不用就忘记了。高度也不够。没有完全消化透。感觉什么都懂一些,但是什么都差一点火候

 

怎么改善提高

  1. 多写Blog分享,东西会做,和能写出来是两个层面。即使网上已经有很多实现了。消化好之后,用自己的思路表达出来,也有很大提高

  2. 遇到问题,无论是项目还是自己实践,都要多问几个为什么,不能浅尝辄止,站在产品角度。从原理层面理解问题,最重要是给出解决问题方案。demo不等于工程。

  3. 阶段性总结知识点。古语: 学而时习之。

 

反思了很多:也清楚认识到自己的一些优点,有技术热情,爱好学习。很好的逻辑思维。沟通能力。相信只要坚持努力。一定能获得好的结果。也给自己打打气。共勉之。

640.jpeg

  • 作者:AceDong

  • https://juejin.im/post/5b3c40f4e51d45191a0d0aae

  • iOS开发整理发布,转载请联系作者获得授权

 

640?wx_fmt=gif640?【点击成为源码大神】

            </div>
<think>好的,我现在需要帮用户了解腾讯IT技术方向的常见面试问题。首先,用户提到了参考的四个引用,我需要仔细看一下这些引用内容,看看里面有没有相关的信息可以提取。 引用[1]提到2024年最新常见面试问题及答案,特别是Python相关的,但用户问的是腾讯的技术方向,可能包括多种语言,比如C++、Java等。引用[2]是腾讯面试的详解,里面应该有很多具体的问题和知识点,比如算法、系统设计等。引用[3]提到了Android开发上岸腾讯的核心知识点,可能涉及移动开发相关的问题。引用[4]是腾讯C++工程师的面试题,重点在C++基础、编码能力、系统设计等。 接下来,我需要把这些信息整合起来,分门别类地列出常见问题。通常技术面试分为几个部分:基础知识、算法与数据结构、系统设计、项目经验、行为面试等。根据引用中的内容,基础知识可能包括编程语言(如C++、Java)、操作系统、网络、数据库。算法部分可能会有手撕代码,比如快排、动态规划等。系统设计方面,引用[4]提到系统设计能力,可能需要准备高并发、分布式系统设计。项目经验部分,引用[2]和[3]都强调了项目细节和解决方案。行为面试可能涉及职业规划、团队协作,引用[1]和[3]提到相关的内容。 然后还要注意用户提到的“聘”,所以问题可能更偏向于实际工作经验和高级知识点,而不仅仅是校的基础题。例如,系统设计题可能更复杂,项目经验要求更深入。 另外,用户要求生成相关问题,我需要确保每个部分都有示例问题,并且符合腾讯面试风格。比如,C++的问题可能包括虚函数、内存管理,算法题可能涉及常见的LeetCode中等难度题,系统设计可能像设计一个秒杀系统。 最后,需要确保回答结构清晰,分点列出,并附上引用标识。同时检查是否符合之前的系统级指令,比如数学公式的格式是否正确,是否有生成相关问题等。 现在需要把这些整理成一个结构化的回答,涵盖各个技术方向,并引用对应的参考资料。同时,生成的相关问题要围绕用户可能感兴趣的后续问题,比如如何准备、优化方法、实际应用等。</think>### 腾讯IT技术方向面试常见问题总结 腾讯技术面试通常围绕**基础知识、算法能力、系统设计、项目经验、行为面试**展开,以下是具体分类及高频问题: --- #### 一、编程语言与基础 1. **C++方向**(引用[4]) - 虚函数实现原理、多态性如何体现? - 内存对齐规则及设计原因? - STL容器底层实现(如`vector`扩容机制、`unordered_map`哈希冲突解决)。 - 智能指针(`shared_ptr`、`unique_ptr`)的使用场景与线程安全性。 2. **Java方向**(引用[3]) - JVM内存模型与GC优化策略。 - 并发编程:`synchronized`与`ReentrantLock`区别,`ConcurrentHashMap`实现。 - Spring框架中AOP和IOC的设计思想。 3. **Python方向**(引用[1]) - GIL锁对多线程性能的影响及规避方法。 - 装饰器原理与应用场景。 - 生成器与迭代器的区别。 --- #### 二、算法与数据结构 1. **必考手撕代码**(引用[2]) - 链表相关:反转链表、检测环。 - 动态规划:背包问题、最长递增子序列。 - 二叉树:层序遍历、最近公共祖先。 - 示例代码: ```python def reverse_list(head): prev = None while head: next_node = head.next head.next = prev prev = head head = next_node return prev ``` 2. **复杂度分析** - 快速排序的时间复杂度推导(最好/最坏情况)[^1]。 - 哈希表查询时间复杂度为$O(1)$的前提条件。 --- #### 三、系统设计 1. **分布式系统**(引用[4]) - 设计一个高并发秒杀系统,如何解决超卖问题? - 分布式锁的实现方案(Redis、ZooKeeper)。 2. **数据库优化** - MySQL索引失效场景及B+树优势。 - 分库分表策略(垂直拆分 vs 水平拆分)。 3. **网络协议** - TCP三次握手与四次挥手的详细过程。 - HTTP/2多路复用机制原理。 --- #### 四、项目经验深挖(引用[2][3]) 1. 项目中遇到的**技术难点**及解决方案。 2. 如何保证代码的可维护性?单元测试覆盖率如何? 3. 微服务架构中如何实现服务治理(如熔断、降级)? --- #### 五、行为面试 1. 职业规划:未来3年希望深耕的技术方向。 2. 团队协作:如何推动技术方案在团队中落地[^3]? 3. 抗压能力:项目延期时的应对策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值