阿里测试开发笔试题,网易等Android开发的笔试面试是怎么样的

【海归人才网】一个iOS程序员的BAT面试全记录(内含百度+网易+阿里面试真题)23
上亿文档资料,等你来发现
【海归人才网】一个iOS程序员的BAT面试全记录(内含百度+网易+阿里面试真题)23
【海归人才网】一个iOS程序员的BAT面试全记录;百度+网易+阿里面试真题);作为iOS开发者,虽然Swift已经发布了快两年;我的面试经历分享一下我的面试经历,题目如下,破折;百度;一面:约1.5小时;首先是四个算法题:;1.不用临时变量怎么实现swap(a,b)――用;2.二维有序数组查找数字――剑指offer第3题;3.亿级日志中,查找登陆次数最多的十
【海归人才网】一个iOS程序员的BAT面试全记录(内含
百度+网易+阿里面试真题)
作为 iOS 开发者,虽然 Swift 已经发布了快两年,但是大公司转向 Swift 的动作还不明显,所以 Objective-C 几乎是必备项,Swift 都不一定能算是加分项。iOS 方面的知识也必不可少,虽然招聘信息上写着如果基础扎实,零 iOS 基础也可以,但是现实往往是比较残酷的。
我的面试经历 分享一下我的面试经历,题目如下, 破折线后面是简单的解决思路。
一面:约 1.5 小时
首先是四个算法题:
1. 不用临时变量怎么实现 swap(a, b)――用加法或者异或都可以
2. 二维有序数组查找数字――剑指 offer 第 3题
3. 亿级日志中,查找登陆次数最多的十个用户――(不确定对不对,我的思路是)先用哈希表保存登陆次数和ID,然后用红黑树保存最大的十个数。剑指 offer 第 30题
4. 简述排序算法――快排, partion 函数的原理,堆排(不稳定),归并排序,基数排序。
然后有一个智力题 ,没完整的答出来,好像影响不是很大。
最后是 iOS 相关,面试官问的很开放,都是谈谈自己的理解:
1. 说说你对 OC 中 load 方法和 initialize 方法的异同。――主要说一下执行时间,各自用途,没实现子类的方法会不会调用父类的?
2. 说说你对 block 的理解。―― 三种 block,栈上的自动复制到堆上,block 的属性修饰符是 copy,循环引用的原理和解决方案。
3. 说说你对 runtime 的理解。――主要是方法调用时如何查找缓存,如何找到方法,找不到方法时怎么转发,对象的内存布局。
4. 说说你对 MVC 和 MVVM 的理解。―― MVC 的 C 太臃肿,可以和 V 合并,变成 MVVM 中的 V,而 VM 用来将 M 转化成 V 能用的数据。
5. 说说 UITableView 的调优。――一方面是通过 instruments 检查影响性能的地方,另一方面是估算高度并在 runloop 空闲时缓存。
6. 谈谈你对 ARC 的理解。ARC 是编译器完成的,依靠引用计数,谈谈几个属性修饰符的内存管理策略,什么情况下会内存泄露。
一面的问题非常基础,主要是算法和 Objective-C,因为准备比较充分,基本上答出来 80% 吧。大约一周后突然二面。
二面:约 0.5 小时
二面比较突然,先是简单的自我介绍,然后问了三个问题:
1. 野指针是什么,iOS 开发中什么情况下会有野指针?――野指针是不为 nil,但是指向已经被释放的内存的指针,不知道什么时候会有,如果有知道的读者还望提醒。
2. 介绍 block。―― (接第一问) 我让面试官提示我一下什么时候会有野指针,他说用 block 时,我表示还是不知道,只知道 block 会有循环引用。于是就扯回了一面的问题。
3. 说说你是怎么优化 UITableView 的。――还是一面的问题。
三面:北京 onsite,约 2.5 小时
首先是给一个小时,手写算法:
1. 给一个字符串,如何判断它是否是合法的 IP 地址,比如 “192.168.1.1” 就是合法的。
2. 说说大数相加的思路,动手写代码实现。
没能写完,主要是大数相加的时候需要考虑负数,耽搁了一点时间。
然后让我简述 TCP 建立和关闭连接时,握手的过程。还问了前者为什么是三次,后者需要四次?
接下来是设计了一个实际场景,为了简化问题,我们考虑这个问题:假设有 10W 条电话号码,如何通过输入电话号码的某一段内容,快速搜索出来。比如输入 234 ,以下两个号码都会显示在搜索结果中:
其实最简单的解决方案是遍历所有字符串,然后用 KMP 算法。但是这样的问题是需要遍历 10W 个元素,效率比较低。我想到的是办法是使用索引。建立 100 个索引(00 到 99),比如输入 234 时只需要在索引 23 对应的区域查找即可,可以加快 100 倍速度。但是缺点是插入数据时,需要更新多个索引,数据量会是原来的 10 倍。
目前还没有想到好的解决方案。有大神提醒说用字典树,有空研究一番。
最后问了 OC 的数组中,添加 nil 对象会有什么问题。当时没答上来,现在想想很不应该,因为数组是以 nil 结尾的,如果添加了 nil ,后续就不能添加对象了。
主要是计算机方面的大杂烩,涉及操作系统,网络,移动开发,算法等。难度不大,目测是为了淘汰浑水摸鱼的人,就不列出题目了,算法有三题,直接在线写(木有 IDE 表示很忧伤):
1. 很长一道题,读了很久才读懂,目测是 DFS,但是最后没时间了,写了个思路。
2. 把 “www.” 这样的字符串改成 “com/baidu/zhidao/www”。――老题目了,剑指 offer 的,两次逆序排列即可。
3. 求数组中和为某个值的所有子数组,比如数组是 [5,5,10,2,3] 一共有四个子数组的和是 15,比如[5,10] , [5,10] , [10,2,3] , [5,5,2,3] 。这个就是简单的递归了,分两种情况,当前位置的数字在子数组中,以及不在子数组中。
全部是 iOS 题,可能是觉得算法已经面过了:
1. 介绍 block。――我提到栈上的 block 在 ARC 下会自动复制到堆上,面试官问我从 iOS 4 还是 5 开始支持这一特性,表示不知道,我又不是学 OC 历史的,后来想想可能是公司内部老项目有这个坑。
2. ARC 会对代码做什么优化?――比如 NSString *s2 = s1; s2 = nil 这样的语句,可能就不会有retain 和 release 方法了。
3. 介绍一下 MVVM 和 RAC。――可能是我简历的某个角落写了用过 RAC,被挖出来了,大概谈了一下,结果面试官问我数据的双向绑定怎么做, bind 函数了解过么,果断说已经忘了:joy::joy::joy:
4. 介绍自己用过哪些开源库。――Masonry 和 SnapKit,AFNetWorking,MKNetworkKit,Alamofire,Mantle,SDWebImage
5. 如果让你写,你能实现么?――当然不能,不然还要实习?
6. 读过某个库的源码么?――扯了一点 SDWebImage,后来被告知这个库用了 runloop 来保证滑动是加载数据的流畅性,自己看了源码后表示没有发现,唯一用到 runloop 地方是保证后台线程一直跑,也有可能是我理解错了,如果错误欢迎指正。
7. SDWebImage 下载了图片后为什么要解码?――当时蒙住了,面试官很 nice 的解释了一下,说是要把 png 文件建立一个什么内存映射,目前还不太懂,有空研究一下。
本来以为面的这么差肯定是挂了,没想到还是过了一面。过了不到一个小时,HR 电话打过来,约了两天后二面。
纯数学和算法:
1. 下面这段代码的输出结果是:
int main() {
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf(“%d,%d”,*(a+1),*(ptr-1));
答案是 2 和 5。 a是指向数组开头元素的指针, a + 1 就是指向下一个元素的指针,所以星号求值以后是 2。 &a 相当于是数组的指针, &a + 1 是数组后面一个数组的指针,然后转换成 int * 类型是 5 这个数字后面的一个数字的指针。再减一就是指向 5 的指针,所以星号求值以后是 5。
2. 某个地方天气有如下规律:如果第一天和第二天都不下雨,则第三天下雨的概率为30%;如果第一天和第二天中有任 意一天下雨,则第三天下雨的概率为60%。问如果周一周
二都没下雨,那么周四下雨的概率为 _ 。简单的概率题,答案是: 30% * 60% + 70% * 30% = 39%
3. 某痴迷扑克的小团体喜欢用TJQKA来计数,A后面是
22,23,?,2A,32,?,AA,222,? 依次类推。请用C/C++或Java写个程序,将用字符串表示这种计数法转换成字符串表示的10进制整数。其中,该计数法的2就对应于十进制的2,之后依 次递增。C/C++函数接口: char* pokToDec(char *)我的解决思路是进制转换,类似于 16 进制转换 10 进制这种,最后再把数字转成 char * 类型。
然后好像没结果了,可能是编程实在太渣了?
其他我知道的面试题
阿里一面:
1. MVC 具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?
2. 两个无限长度链表(也就是可能有环) 判断有没有交点
3. UITableView 的相关优化
4. KVO 、 Notification 、 delegate 各自的优缺点,效率还有使用场景
5. 如何手动通知 KVO
6. Objective-C 中的 copy 方法
7. runtime 中, SEL 和 IMP 的区别
8. autoreleasepool 的使用场景和原理
9. RunLoop 的实现原理和数据结构,什么时候会用到
10. block 为什么会有循环引用
11. 使用 GCD 如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
12. NSOperation 和 GCD 的区别
13. CoreData 的使用,如何处理多线程问题
14. 如何设计图片缓存?
15. 有没有自己设计过网络控件?
阿里二面:
1. 怎么判断某个 cell 是否显示在屏幕上
2. 进程和线程的区别
3. TCP 与 UDP 区别
4. TCP 流量控制
5. 数组和链表的区别
6. UIView 生命周期
7. 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B
的 viewDidAppear 方法哪个先调用?
8. block 循环引用问题
9. ARC 的本质
10. RunLoop 的基本概念,它是怎么休眠的?
11. Autoreleasepool 什么时候释放,在什么场景下使用?
12. 如何找到字符串中第一个不重复的字符
13. 哈希表如何处理冲突
面试收获 1. 算法题怎么答
面试官可能会问到你闻所未闻的算法,这时候你不应该自己瞎想,而是先和面试官把问题讨论清楚。要知道,通过沟通弄明白复杂的问题也是一种能力, 在和面试官交流的过程中,不仅仅可以搞清楚题目真正的意思是什么,还可以展现自己良好的交流沟通能力。所以千万不要因为紧张或者害羞而浪费这次大好的机会。
有些题目似曾相识,但是暂时没有思路。这时候不妨告诉面试官,给我一些时间思考这个题。然后不要急,不要慌,就当他不存在,拿出纸和笔慢慢算 (这充分说明了面试戴耳机的重要性)。你一定要坚定一个信念:“任何一道稍微有难度的算法题,除非做过,否则一定是需要时间想的”。所以,合理的安排思考 时间吧。如果十几分钟都想不出来,可以直接放弃。
有时候面试官会要求在线编程,相信我,他不会无聊到盯着你的代码看的,面试官一般都很忙,他也有自己的工作要完成,所以你就当是用自己的 IDE 就好。在线编程往往是一个中等难度的问题,所以不要自己吓唬自己。同时要注意代码格式的规范,适当的注释,提前编写好测试用例等,即使没有解决问题,也至 少要把自己良好的编程习惯展示给面试官。
2. 遇到不会的问题怎么处理
这个问题有可能是面试官故意说得含糊不清,考察你的交流能力,也有可能是无意的,或者是你的理解方式出现了偏差。不管是以上哪种问题,你都应该先和面试官交流,直到你搞懂了面试官要问你什么,而不是按照自己的理解说了一堆无用的东西。
举个例子,面试官可能会问了一道算法题:“如何判断两个无限长度的链表是否有交点?”。对于“无限长度”可以有不同的理解,如果真的是有无穷多 个节点,那显然这个问题是无法解决的。但如果链表仅仅是有环,那么还是可以解决的。如果面试官的本意是链表有环,但你错误的理解成了无穷多个节点,那么必 然会导致无法回答这个问题。而且这并非能力不足,而是属于交流沟通方面的失误,这也正是我想分享的“技巧”。
还有一些问题,虽然你没有接触过,但是由于对类似的问题或者情况有过思考,所以可以合理假设。比如面试官问 “ARC 会对代码做什么样的优化?”。我们知道 ARC 的本质就是在合适的地方插入 retain 和 release 等方法,那么就应该从这个角度出发去思考问题。
显然分别执行 retain 和 release 操作是没有必要的,那么就可以构造出相应的例子:
NSString *s1 = @&hello&;
三亿文库包含各类专业文献、幼儿教育、小学教育、专业论文、生活休闲娱乐、行业资料、中学教育、应用写作文书、高等教育、外语学习资料、【海归人才网】一个iOS程序员的BAT面试全记录(内含百度+网易+阿里面试真题)23等内容。 
 海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】面试完之后你应该做什么?虽然在面试之后是该好好放松一下了,可是你的 pre-job...  海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】 “海归”名企面试 七步有备而战海归名企求职难处多,新东方网留学频道在此分享...  海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】面试中如何回答自己的 &劣势& ?劣势这个东西,其实首先需要定义一下。啥叫劣势呢...  海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】精选 | 硅谷的面试官是怎样面试的?面试中不同人考察的内容不一样,给一张表...  ()-专注留学生海归求职培训辅导服务 【海归人才网】中金公司 2016 研究部求职面经同学香港读研,共经历中金研究部面试四轮:HR 电面-研究员面-...  海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】这些情况,去面试可能真就是浪费时间!对正在找工作的人来说,虽然时刻都希望能接...  海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】不打无准备之战 投行的面试总结与经验分享准备篇 可以主要收集 3 方面信息: 1...  _面试_求职/职场_实用文档。海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】如何向面试官提出高逼格问题?许多求职者把求职面试看...  海归求职网()-专注留学生海归求职培训辅导服务 【海归人才网】腾讯面试经验之前段后端前端 准备阶段我也在网上看了一些腾讯面经, 特别是 web...2191人阅读
安卓面试题(45)
找工作不容易 555
号(网易,转正面试):
& &今年的网易日常实习生转正相对于往年严格,一二面是别的部门技术交叉面,三面是hr面。
& & 一面:(一个小时) 主要根据简历所写项目来提问,面试官首先要我做自我介绍,介绍自己做过的项目,在项目中用到的技术。自定义view、自定义属性、view的生命
周期、view的分发与消费,android屏幕适配、activity启动方式、intent flag的方式(怎样总是启动一个新task)、简单与html5交互、线程间通讯( handler和asynctask优缺点、 &handler实现机制)、图片oom(原理、三级缓存、lrucache算法实现、linkedhashmap)、hashmap的数据结构、项目中请求网络的框架(线程池(优点)、有多少个线程、多了怎样、少了怎样)、string 、stringbuffer、stringbuilder区别、linkedlist、arraylist区别、什么情况java会造成内存泄漏
(java垃圾回收、分代)、两个activity 跳转他们之间的生命周期(当时回答不是特别好),相对布局、线性布局区别,手写一种线程安全的单例模式(但是很紧张,有点小失误),大概就这么多,问的还比较深、基本都打上来了,不过感觉有点虚。
& & 二面:(五十分钟) 问了在实习项目中遇到的最难(最困惑的技术点),面试官让我把手机拿出来给他展示了下我做的一些什么东西,然后再提问(自定义View 、
view的生命周期、view的分发与消费等)、项目中的网络框架、图片加载框架(里面的实现) 、与html5交互、项目中用了那种 为什么不用另外一种、(此次二面更多是围绕项目来说的) 、 另一个项目(通讯的实现、我介绍了下xmpp,mqtt,轮循的优缺点、我们选择了什么,为什么,做了简单的一些优化) 、做过什么优化没、 & 平常怎么学习的,看谁的博客、 自己有什么擅长的领域(我把自己的小论文说了下,面试官让简单介绍下推荐算法,说了下协同过滤、以及有在曾经的项目小小的用下)
、 &Object[] a= new String()[10] ; a[0]=new Intger[1] &和 List&Object& &a= new Arraylist&String& & &a.add(new Intger[1]) &区别 (后来发现答错了,泪崩 )
& & hr面:(半个小时)学校在哪啊、为什么要读研、愿意来杭州吗、父母支持?、实习过的地方,网易和Ibm有什么不一样、团队中遇到什么困惑呀怎么解决、 要到的挫折,怎样解决、安卓N的新特性、能不能用在项目中。
& &这次找同学内推的蚂蚁金服,大概20多号投的简历,投完后第二天做好了测评,测评大概就是类似于考公务员行测(找规律,还有很多类似于hr的题目)然后简历一直是新投递状态,大概等了十二天 ,此时我身边已经有好几个大神已经一面了,感觉自己简历都没通过。 8月1号 简历变成了评估中,然后又等了两天,总感觉会在网易转正面试的时候接到电话。果不其然,3号下午还在面试中,阿里就打了四个电话都没接到。 深深地恶意。
8月4号一面 : &(53分钟)一面也主要根据简历来问,挖的很深。首先做自我介绍, 然后面试官来提问,问了网易项目中的自定义view ,view的生命周期,分发与派遣,自定义属性,在项目中怎么用,安卓里的三种动画,怎么样自己绘制动画(实现自己的动画)。多线程有几种实现方式,有什么区别,线程之间的通信,anysctask怎么实现,怎样交互,和handle区别,handle实现原理,handle线程里怎么实现,线程池有什么好处,哪里有用到过没,怎么实现。有什么线程安全hashmap,答concurrenthashmap当时只记得con开头,为什么线程安全,我答不怎么知道,但是可能是用了synchronized,用了这个对效率有什么影响,然后我说项目有用linkedhashmap,解释linkedhashmap在项目中怎样用(讲了下图片缓存,lrucache算法,三级缓存),让我讲讲对线程安全理解,我答银行存取钱,问在linkedhashmap,图片缓存中可能有什么线程安全问题
。项目中通讯方式,http和https区别(https用了什么证书,怎样在网络传输中实现,我当时回答了osi七层,TCP udp ,三次握手,四次断开)
& 腾讯在杭州的一个酒店,当天人不是特别多。
笔试:百度
一面(第一个人): (让我自己说)我先自我介绍,然后把简历上面的项目介绍了下,面试官根据我的项目来提问。(http网络)最后他说他是游戏的,不懂安卓,把我推荐给了其他面试官。
一面(第二个人): &先在纸写冒泡排序,安卓的四大组件,进程和线程区别(在app中各有什么优缺点),tcp和http区别,数据库怎样快速查询(索引,mongodb)........
& 未完待续
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:52585次
积分:1023
积分:1023
排名:千里之外
原创:21篇
转载:191篇
(3)(1)(5)(37)(16)(22)(128)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 阿里内容运营笔试 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信