基本信息
事业群:PCG
岗位:移动客户端开发(iOS、Objective-C语言开发)
实习时间:6月份之后的暑期实习
面试日期:3月30日 - 3月31日
offer call:4月10日(看到很多小伙伴都接到offer call了,内心有一些着急,9号换了ycy头像)
一面
面试时间一共为:28min,3月30日
问题涉及:iOS项目、操作系统
问题未涉及:计算机网络、数据结构、算法、场景
项目介绍及相关问题:
APP
1.获取当前天气功能为什么要使用协议代理?过程如何?
表述还需加强。
2.是否接触TableView渲染性能相关的东西?
-
cell的数目,配置tableview数据
重用单元格的形式,数据成千上万行,最终渲染个数为屏幕上显示的数目。
往下拉的时候,最上面的cell到最下面来,放置重复渲染,提高手机性能。
-
刷新页面的两种方法
-
无动画效果:tableView.reloadData(),就是相当于执行 cell for row的方法,将结果取出来,再更新视图
-
将刷新语句放在View.beginUpdates()、tableView.endUpdates()中间,可以提高app的性能
-
基础问题
iOS相关问题
3.MVC模式,有什么缺点?
介绍了概念和优点。
缺点猜测作答。
4.RunLoop是什么?
-
概念:事件循环对象,在循环过程中处理各种事件(点击、刷新等),从而保持程序持续运行;在没有事件处理的时候,会进入睡眠模式,从而节省CPU资源,提高程序性能。
-
为什么需要:一个线程只能执行一个任务,执行完就会退出,如果我们需要一种机制,让线程能随时处理时间但并不退出,那么 RunLoop 就是这样的一个机制。Runloop是事件接收和分发机制的一个实现。
-
Runloop 和线程是绑定在一起的。每个线程(包括主线程)都有一个对应的 Runloop 对象。我们并不能自己创建 Runloop 对象,但是可以获取到系统提供的 Runloop 对象。
5.点击事件之后发生什么?
这里没准备过,跟面试官说是否可以根据已有知识猜测一下流程,面试官说可以。
大概从获取事件源,执行事件内容方面作答。
操作系统问题
6.进程和线程的区别?
操作系统的概念;异同点;iOS上的进程和线程,多线程。
7.多线程共享资源,如何防止资源问题?
-
资源是否是独占(独占锁 - 共享锁)
-
抢占不到资源怎么办(互斥锁 - 自旋锁)
-
自己能不能重复抢(重入锁 - 不可重入锁)
-
竞争读的情况比较多,读可不可以不加锁(读写锁)
提问环节
我:为什么面试时间较短?
有人面试一个小时,被举报了。
面试官:是否介意转正率低?
不介意,先努力转正,不行可以秋招再投递。
二面
面试时间一共为:28min,3月30日
问题涉及:iOS项目、网络、排序算法
项目介绍及相关问题
自由探索科研项目
1.高维数据降维
2.数据稀疏如何处理
3.梯度下降过程
APP
4.网络请求的第三方库是什么?
基础问题
网络
5.HTTP状态码
6.HTTP和HTTPS的区别
算法
7.稳定的排序有哪些?
三面
面试时间一共为:23min,3月31日
项目介绍及相关问题
1.遇到的困难?
反向传值delegate+protocal;
GCD主线程控制UI刷新。
2.是否了解性能相关的东西?
渲染和多线程
3.是否了解跨平台开发?
不了解,聊了一些前端的东西。
https://juejin.im/post/5b076e3af265da0dce48fe95
social环节
4.为什么想做iOS开发?
5.未来移动端开发的趋势是什么?
可能以后 Web 和 Native 的边界会越来越模糊。偏向于Hybrid APP开发。
(我是果粉,面试的时候表现的是热爱iOS开发。然而说到最后,面试官老师说未来的趋势是安卓,感觉就有点崩了。最后建议我了解跨平台开发。)
HR面
时间:9min,3月31日下午4点半
自我介绍+哪里人+是否愿意来深圳之类的问题。
offer call
时间:2min,4月10日上午11点
确认个人信息、部门、岗位、工作地点。
通知今日之内会发放offer到邮箱。