2019暑期实习面试 - 腾讯PCG移动客户端iOS开发面试

基本信息

事业群: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到邮箱。

posted @ 2019-04-18 15:29  怡人Iris  阅读(894)  评论(0编辑  收藏  举报