wxg 客户端面经

wxg客户端 投晚了,提前批没面完,正式批接着面的 10.12号才oc 整理一下面经发出来

9.14 微信一面

自我介绍
项目
消息转发
mvvm和mvc的区别
是否了解Rac链式编程,只了解一点,简单讲了一下,没用过
项目-tableview滑动优化,渲染原理、卡顿原因
runtime方法调用流程以及消息转发三个阶段优劣
SDWebimage源码 图片解码那部分
设计模式 简单工厂 抽象工厂 单例 ..等
runtime理解 分三部分:
1、方法调用流程
2、objc源码(包括对象本质等)
3、runtime应用(runtime api 、MJExtension 、YYModel)
自己还有什么擅长的 讲一讲
反问

9.15 微信二面 70分钟

聊了会天
项目
消息转发(提到了jspatch、Aspects 原理)
提到了jspatch 又问patch方案设计 说了基于libffi的方案 ,面试官说了汇编实现方案
多个任务执行完后再执行下一个任务用什么 gcd group 底层实现? 信号量
__block 修饰得局部变量为什么可以被修改 局部变量被包装成对象..
scrollview相关一个设计 不会.. 面试官给我讲了一下 其实是一个开源库,让我多看源码
算法题
最长连续序列
最长上升序列
二叉搜索树第3大节点
反问 提前批面不完怎么办 面试官说正式批捞接着面(正式批被

9.24 微信面委会 50分钟

讲项目
Runtime 读过哪部分objc源码,讲一讲细节
实习做了什么 (好像不太满意, 面试官觉得就这?)
在学校有没有研究过什么有意思的东西 讲了自己做的一个测心率的算法 面试官挺感兴趣的,还问为什么没写简历上。。
反问

9.25 微信面委会 二面 75分钟

是个安卓老哥 ,全程聊项目。
Oc语言动态性 runtime是什么 仔细讲解了runtime方法调用流程(包括objc_msgsend汇编实现的那部分)
系统崩溃原理 讲了操作系统层面 又提到kscrash 这样的crash信息收集第三方库的实现原理 函数调用堆栈..等
如何防止崩溃
阅读过哪些源码 讲了一下SDWebimage YYCache 又聊到锁(自旋锁 互斥锁 递归锁)
反问评价 面试官挺满意

#腾讯##iOS工程师##校招##面经#
全部评论
还就那个wxg
1 回复 分享
发布于 2020-10-18 10:33
大佬是wxg下哪个部门的啊
1 回复 分享
发布于 2020-10-18 10:13
大佬太强了
1 回复 分享
发布于 2020-10-12 19:55
请问下大佬有没有推荐的客户端相关的书呀?或者学习的网站之类的呀?谢谢大佬
点赞 回复 分享
发布于 2020-10-13 12:24
大佬太强了
点赞 回复 分享
发布于 2020-10-12 19:58

相关推荐

05-24 12:03
湖南大学 Java
1、项目什么时候会触发失败,人为介入;2、sql如何分页展示    在sql中,可以使用limit和offset子句或者row_number()窗口参数来实现分页展示数据; limit number_of_rows表示每页展示的行数,offset offset_value表示跳过前面的行数。例如,对于第一页,offset是0,以此类推;3、http包含了哪些内容    请求方式(get、post、delete、put)、状态码(1XX表示请求已被服务器接收,继续处理、2XX表示请求已成功被服务器接收、理解、并接受、3XX表示需要客户端采取进一步的操作才能完成请求、4XX表示客户端请求有语法错误或无法完成请求、5XX表示服务器在处理请求的过程中发生了错误)4、TCP的状态    三次握手、四次挥手5、如果在建立连接的时候,ack后,开始发送数据,但是ack数据包丢失,这个情况下服务器如何处理这个数据包    首先关于服务器状态的改变,在正常情况下,服务器收到客户端的ACK报文之后,连接就进入了ESTABLISHED(已建立)状态,但是ACK数据包丢失,服务器在发送SYN-ACK报文之后,会等待客户端ACK的确认,此时服务器的状态会一直保持在SYN-RCVD(同步已接受)状态。    服务器的重传机制,在一定时间内,没有收到客户端的ACK报文,服务器会重新发送SYN-ACK报文。    在等待ACK的过程中,服务器会为这个半连接分配一定资源。6、操作系统的进程调度方式,win使用哪些进程调度方式,linux是使用哪些进程调度方式操作系统的进程调度方式主要有以下几种:先来先服务调度算法(FCFS)原理 :按照进程进入就绪队列的先后顺序进行调度,先到达的进程先得到处理。特点 :简单易懂,但可能导致后到达的短进程等待过长。短进程优先调度算法(SJF)原理 :优先调度估计运行时间短的进程。特点 :能有效减少进程的平均等待时间,但难以准确预估进程的运行时间。时间片轮转调度算法(RR)原理 :将 CPU 时间划分为一个个时间片,按就绪队列顺序分配时间片给进程运行,若时间片用完而进程未完成,则进入队列等待下一轮调度。特点 :适合多用户分时系统,保证了每个进程都能获得一定的 CPU 时间,但时间片大小的选择较关键。优先级调度算法原理 :为每个进程设置优先级,优先级高的进程先调度,优先级相同则按先来先服务调度。特点 :灵活但易导致低优先级进程饥饿。多级反馈队列调度算法原理 :设置多个就绪队列,每个队列对应一个优先级和时间片大小,进程根据运行时间和抢占情况在不同队列间移动,优先级高的队列中的进程先调度,同一队列中的进程采用时间片轮转调度。特点 :兼顾多个方面,是较复杂的调度算法,能有效处理各种类型的进程。Windows 的进程调度方式:多优先级反馈调度算法 :Windows 将进程分为多个优先级,优先级高的进程优先调度。系统会根据进程的行为动态调整优先级,如交互式进程的优先级会提高,CPU 密集型进程的优先级会降低。实时进程调度 :对于实时进程,Windows 使用先来先服务和轮转算法,确保实时任务及时得到处理。Linux 的进程调度方式:完全公平调度器(CFS) :基于红黑树数据结构管理进程,通过计算进程的虚拟运行时间来确定调度顺序,优先调度虚拟运行时间少的进程,兼顾进程的公平性和吞吐量。实时进程调度 :包括先来先服务(SCHED_FIFO)和轮转(SCHED_RR)两种策略,确保实时进程及时得到 CPU 资源。过时的 O(1)调度算法 :早期 Linux 使用,基于就绪队列和过期队列,优先调度优先级高的进程。pv操作PV 操作是操作系统中进程同步与互斥的一种重要机制,主要用于处理进程之间的资源竞争和同步问题。PV 操作通过信号量(semaphore)来实现,它包含两种操作:P 操作和 V 操作。PV 操作的定义P 操作(wait 操作) :用于测试信号量的值。若信号量的值大于等于 1,则信号量减 1,进程继续执行;若信号量的值小于 0,则进程进入等待队列等待。P 操作的格式如下:V 操作(signal 操作) :用于将信号量的值加 1。若信号量的值大于等于 0,则直接加 1;若信号量的值小于 0,表示有进程在等待该信号量,此时唤醒一个等待的进程,并将信号量的值加 1。V 操作的格式如下:
查看7道真题和解析
点赞 评论 收藏
分享
评论
4
29
分享

创作者周榜

更多
牛客网
牛客企业服务