2015网易iOS岗实习面试小记(广州)
来源:互联网 发布:软件企业审计表格 编辑:程序博客网 时间:2024/04/28 04:36
面试已经过去有一段时间了,之前一直忙于其他零零碎碎的事情,没有把网易的面试记录下来,今天就靠着记忆,写写网易的面试经历。
先从投简历+在线笔试说起,在网易实习招聘的官网按提示填好信息、投递简历即可,本人是iOS APP开发方向,所以投的是网易的“平台开发工程师”,据网易的说法,不是所有投了简历的人都有参加在线笔试的资格的,按我和我几个都过了简历筛选的同学的情况来看:只要是计算机相关专业,正常的本科院校,有一定项目经历的简历基本都可以通过简历筛选这一关(当然你的简历还是要写的比较简洁、主次分明、突出自己的优势)。
在线笔试类似以前的ACM比赛,在hihoCoder上有三道算法题,两个小时答题时间,答对越多、提交越少、提交越早,排名越高。我大概看了看,参加这个在线笔试的人大概有500-600人,三题中有一题比较简单的,一道适中,还有一个稍难一些的,最后三题加起来的AC人数也就300个左右..所以基本上说,只要能够AC一题,就可以过这个在线笔试(我就只AC了一题..是一道小人推箱子的模拟题),当然,笔试的成绩肯定也会对之后的面试有一定的影响。
一面
没几天就接到网易HR的电话,说我通过了在线笔试,约我找时间进行电话面试(可能是岗位不同,我有一个同学投的游戏开发部,连笔试都没有直接就面试了),最后约了当周周二晚上6:00开始面试,HR说面试大概会持续一个小时左右。
经过之前微信和腾讯的面试,我大致了解了企业面试的“模式”,而且通过一段时间来对内存分配管理、Objective-C Runtime知识的恶补,我对这次面试还是充满了信心的;面试官很准时的刚过6点就打来了电话,进行简单的问好之后就开始正式面试了:
首先是自我介绍,接着面试官直接开始问项目上的问题,先简单的介绍了一下自己的项目,接着面试官会针对他对项目中感兴趣的一些技术提问,由于我的项目涉及到本地文件通过FTP上传至服务器,所以面试官问了我一下上传的原理和过程,答:NSInputStream按字节读入本地数据流,NSOutputStream向FTP服务器写数据流,读完写完即上传完毕,再问:由于本地读写速度常常快于网络传输速度,如何保证读入的数据能够全部传至服务器?答:NSInputStream读入的字节流的方法将返回一个实质读入字节数的值,我将其记为bytesRead,而NSOutputStream向网络中写入数据的方法会返回实际写入字节数,记为bytesWritten,再设置一个变量totalBytesWritten,每次 totalBytesWritten += bytesWritten,直至bytesRead == totalBytesWritten ,证明字节流已经传输完毕。面试官又问道:为什么我没有实现断点上传? 答:NSOutputStream不支持断点上传,没有用于配置命令的方法(FTP连接建立后有一条数据链路,一条命令链路,想实现断点上传肯定需要发送Appe命令以将当前上传的文件append到指定文件末尾,按我的理解NSOutputStream默认地发送的是STOR命令,即覆盖同名文件,而这个命令NSOutputStream类并没有给出配置接口),接着面试官追问:为什么NSOutputStream支持直接向FTP写数据,而不是好像一般的文件输入输出流方法一样只支持本地的流操作,到这里我就答不上来了,接着沿着FTP这个协议的方向继续深入,问了我FTP的报文格式是什么(FTP的报文格式?其实我觉得可能他想问的是TCP?),看我对FTP没有深入理解,面试官又开始问我HTTP的相关知识:
首先问了这样一个比较出乎我意料的问题:“当你平时上网时,出现访问不了目标网页的时候,你会觉得是哪里出错了?”,我当时听到就蒙了,平时从来没有考虑过类似的问题(事后想想,他应该是在考察HTTP请求的格式,浏览器如何将网址转换成ip以及端口号,如何自动添加HTTP Method,而HTTP的响应报文又包含哪些信息等等,分析在这些过程中可能出现的错误等,有关HTTP的更多内容,可以参看:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html ;再往低走可能就可以答一些网络丢包,服务器接收缓冲区溢出什么的东西)。接着面试官又问了我HTTP中GET和POST的区别,我的理解仅仅停留在GET一般用于请求服务器的数据,POST一般结合HTTP的请求报头和请求正文,用来修改服务器上的数据。
到这时候我觉得自己已经挂了(网络部分基本问什么不会什么),随后面试官转到了iOS以及ObjC上来,首先问了我Extension的问题(好几次面试都问到Extension,Category的问题),我答了一下extension的用途,面试官也没有继续深入(之前看ObjC Runtime的一些文章, 有提到这种技术主要是依赖于C的addMethod之类的底层的黑科技实现的,有关ObjC Runtime,推荐:http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/)。接着问了一下声明property时的关键字strong的作用,并借此问了一下引用计数的问题,以及解决循环引用的方法,其实无非是合理运用weak,或者编程的时候在某一恰当时刻手动将引用一方置为nil。接着让我解释一下MVC架构,以及MVC的作用和优缺点,我借此提了一下MVVM和VIPER,这两个最近在iOS项目架构上非常火的架构,但是面试官好像也不是非常感兴趣(包括微信、腾讯,对架构只字不提),接着问了我本地数据存储的问题,Core Data我用过,但对CoreData整个框架不熟悉,它的Context,Coordinator具体的分工以及这样设计的原因我都不太清晰,接着问我有没有在项目中使用过SQLite,我答说没有,虽然会写select语句,但在项目中没有遇到运用到SQLite。
最后,问了一些算法问题,首先是说:有几百万个URL地址存在一个文件中,如何计算每个URL的出现次数?
我想了想,并没有想出比较高效的算法,以前遇到这样的问题,一般操作对象是字符或整型数,因此可以比较简单地转换成哈希的形式,但这次是URL,是长串的字符串,所以我一时并没有想到要如何设计算法。
第二个问题则是让我解释一下二叉搜索树是什么,以及树的三种基本遍历方式。
至此,电话面试基本结束,最后当然面试官给你一个问他问题的机会,我就让他说说平台开发工程师这个职位,或者说网易的移动开发部(不是移动游戏开发噢)大概是做什么的,面试官说大概是做一些网易游戏周边的手机客户端,譬如藏宝阁、充值平台等等。
二面
对于读入的新结构体,从链尾开始,若结点的value小于当前新结构体value,则丢弃链尾,将链尾的前一个值作为新的链尾,再继续进行相同操作,直至当前结点value大于等于新结构体value,则将这个新结构体作为新链尾,否则,这个新结构体将成为新的链头。当当前链尾的index与链头index相差超过m时,即则将整个链表”前移“,抛弃链头,将原第二结点设为新的链头。
总结
- 2015网易iOS岗实习面试小记(广州)
- 网易游戏开发岗实习面试(十年广州求学路以及一个菜鸟半年多的成长之路)
- 微信在校生实习面试小记(iOS端)
- 实习面试小记-腾讯、阿里、大摩、网易
- 2015 CVTE 实习招聘经验谈(广州)
- 网易游戏实习电话面试
- 网易游戏2017实习面试
- 2016暑期实习面试小记
- 2016网易面试测试岗实习生面经
- 2015广东移动“灯塔计划”暑期实习面试小记
- 网易ios 面试
- 网易游戏平台开发实习面试总结
- 网易移动开发组实习 面试
- 2014 网易 移动开发组 实习 面试
- 记一次网易前端实习面试
- 记一次网易前端实习面试
- 记一次网易前端实习面试
- 记一次网易前端实习面试
- STL的缺点
- 非刚性人脸跟踪(二)
- iOS推送流程(一)
- Android初学者Eclispe环境启动遇This Android SDK requires Android Developer Toolkit version 23.0.0 or above
- uboot移植准备资料之mini2440裸机实验——存储控制器、NANDFLASH
- 2015网易iOS岗实习面试小记(广州)
- C5-二维数组、字符串数组、多维数组
- 存储过程知多少
- POJ 2509【Peter's smokes】
- C++ Primer第四版习题--4.7
- 希尔排序
- 凌阳61单片机按键灯修改
- Mac下使用jenv管理多个版本的JDK
- Javascript模仿块级作用域