一年Android-有赞蚂蚁面经
本命年与找工作?
若不是同事提醒,怕是忘记今年真是我本命年,本命狗年,非常狗,最爱狗了。
前记
大概这段时间也需要分享一个面经出来,今天周末,面试也算告一段落,将前两星期的面试经历先记录下来,后续再在这篇文章上继续更新。
说来很神奇,Boss直聘上,我联系了26个职位,投出7份简历,收到4个面试邀请,其中3个都是自己找上我的。
为什么离开同花顺
同花顺帮助我从学校人成长为了社会人,也算养活了我一年,还是抱有感恩之心。也非常感谢鲍哥和代哥,在工作生活给予了很多帮助,代哥还请了应届生的大家一起吃饭,最后谈话代哥还说你走了是我们部门我们公司的一大损失啊。言重了,言重了。鲍哥和我谈了很久,比如可以内部转岗之类都可以帮忙等等,我说我正在面蚂蚁和有赞,鲍哥最后也表示理解,也同意说放我走,去更大的平台也是一种提升,鲍哥是非常nice的老板了。听说有一些老板是会把下一家拖黄了才会放人的。
为什么离开同花顺,主要还是因为公司对我的发展需求和个人的职业规划不符合。假如继续在当前部门工作,我以后的发展可能就是单独带一个项目。但是B2B部门框架成熟,有公版可以参考。个人的技术水平的提升可能会倾向于项目管理等方面的成长。而我更希望自己从技术深度、广度等方面以一个比较快的方式成长,不仅仅成为一个项目的负责人,而是成为一个高级开发工程师,甚至资深工程师、技术专家。
1. 有赞
因为有赞的面试经历更具有普适性,有赞的面试会比较详尽地表达一下。
1.1 有赞一面
3月7日周三,本来约了Daily2fun的一面,于是前一天晚上就向公司请了假。但奈何蚂蚁大佬来约我周三二面,我左思右想,觉得把握机会,于是放了Daily2fun鸽子,专心等蚂蚁二面(电面)。
当天晚上,我正在要死要活等面试(要面蚂蚁太紧张昨晚3点睡7点起),带着睡眠不足快要猝死的感觉,我的电话来了!心中一凛,午时已到!
面试官一开口就说是boss直聘找来的,我心想,没毛病,我和蚂蚁大佬约的就是在boss直聘,来吧!让暴风雨来得更猛烈些吧!( 这时候我还不知道这是有赞一面)
有赞一面面试题如下(顺序我大概也忘记了,大致列一下):
ps. 开头先问了一句我大概擅长哪些方面,我说java基础和jvm,所以大多问的这两个方面。
- jvm内存管理(方法区、堆、栈等)
- GC是否有了解过(了解过,不知道从哪里开始讲,面试官说都讲一下,于是我说了新生代老年代分区,Eden之类,讲了下Minor GC、Full GC流程,追问了老年代要是满了会怎么样。最后还讲了下GC算法 意犹未尽,我感觉我还能讲,但我已经讲了很久的样子,所以没有继续追问,接下一个知识点)
- Sychronized参数是实例对象和class对象时候的区别(对象锁 类锁),二者区别,使用类锁的具体作用
- volatile的作用,i++用volatile是否能线程安全?为什么?
-
HashMap的原理(看过源码,写过博客,手到擒来),追问ConcurrentHashMap,这个也看过源码,知道里面是分拆锁的使用。不过最后和面试官讨论了一下,分拆锁是锁桶,但是忘记具体是锁的叫什么了(就是忘记是EntrySet还是啥了 面试官说难道不是segment?我也没听来,代码具体确实是忘记了)。讲到这里就涉及了原子操作,就问我都有哪些原子操作,还有原子操作的三个原则(CAS是明白的,但三个原则真是一下子没记住,没答上来,就说到等价并修改,
,这里是我菜了)
这里讲到了原子操作,追问:原子操作是否能解决ABA问题,答不能,反正不影响体验。追问什么方法解决ABA问题,我想了想忘记了不知道,他说用你的方法呢?想了下回答用个标志呗,改一次标识加1.他说差不多是这么回事
补充:对BAT、TMD 这类公司而言,1-3 年的工程师在技术面时面试官最看重的有哪些?
这其中的一个回答:面试官不是来听我们讲不知道的,有时候不妨把自己的想法思路讲一下,让面试官知道我们的解决问题的思路
问到这里可能觉得我擅长的方面问的够多了,就说,问问你的Android基础吧
- Activity的luanchMode,大致解释一下(追问ABC三个Activity,SingleTask模式的A,A-B-C-A的运行过程)
- Window View Activity的关系,追问Acitivty如何和Window关联(讲了下window就是个抽象的对象,实际显示是View,没怎么答出来,这里也是我菜了,其实开发艺术探索里面有的)
- 卡顿优化的经验(我简历提到过,用的的TraceView)
- glide的图片三级缓存
- RxJava的flatMap和Map的作用(在同花顺太久没用,确实忘记了,只记得flatMap是降低层级用的)
- MVC MVP MVVM的理解,DataBinding的作用,ObservableFloat等DataBinding相关类型的具体使用,还有xml比如绑定点击的click(还是很久没用,确实忘记了)
- 忘记怎么就讲到了retrofit的动态代理了,问动态代理的java具体用法,问动态代理有什么作用
差不多就是这些,后续我要是能记起来,再补充。
面试官和我聊了一会儿天,比如问我为何离开同花顺。非常不凑巧,恰好我有来电,嘟嘟响。把自己傻哭的我居然问了面试官一句:诶?怎么会有嘟嘟声?面试官只好说,那今天先这样,面试约在明天,问我是否可以,我说非常可以。
电话挂后不久,面试官再次来电告知二面约在第二天也就是3-8下午3点。我问了地点,是不是在黄龙?是的,黄龙国际中心。我想,稳了,蚂蚁金服确实在黄龙,美滋滋。(这时候还不知道这是有赞一面)
1.2 有赞二面
3-8这天,既然约了有赞二面,手里也没有个offer,所以还是必须去搞定一下。下午快2点,打印简历(事实证明,有赞面试官抱着mac,根本不需要自带简历),打车出发去面试。
14:40多分到了黄龙,大楼挺气派的,假装我是见过世面的人,同花顺大楼其实也是非常有排面,哈哈。就这样上了18楼,出电梯,看见就是有赞前台,环境确实还是不错的,我还多环顾了几眼,边上就是台球桌。
到前台说面试,问我谁约我的,这时候我才想起来,我不知道。好吧,把电面的电话号码告诉了她。她让我边上坐着等一会儿,ok,我乖乖地去傻傻地等着了。
为什么是傻傻的呢?后来来了个中国计量的应届生学弟,面前端,和我聊了起来。聊完他去面试了,我还在等。当我等到15:10分左右的时候,接到了一个电话:约了面试,你来了吗?(来了来了 在前台,手动滑稽,嗯?前台小姐姐居然没有帮我叫人?)
面试官看我没有水,去前台给我拿了一瓶水。然后进入小房间面试。
二面大多也是问的基础的知识,但是相比一面更注重技术的广度,这方面我就没有什么优势了。糟 二面问的啥?
- Activity的launchMode继续问了一遍,ABCA的SingleTask继续问了一遍。(我差点进行了抢答,感受到了面试官隐藏的诧异 手动笑哭)
- GC分代,追问新生代区为什么分成Eden区和Survival From、Survival To
- 图片缓存也再问了一遍
- 对象是否已死的GC标记算法(还以为会多问一点比如什么可以作为GC Root,并没问)
- 自定义View的具体过程,我提到过的仿写即刻点赞里面具体是如何仿写的,追问动画分哪几类(这里感谢扔物线大佬的HenCoder免费教程,让我入门自定义view)
- onMeasure的具体过程,先measure子view还是自己
- onDraw的具体过程,先draw子view还是自己(这两个记得都不是很清楚了,没具体巩固这块的记忆,所以其实开发艺术探索是非常重要的一本书)
- http 和 https的区别 https协议传输数据的具体流程(我对这一块比较菜,直接说了不是特别清楚)
- mvc mvp mvvm再问了一次,加上DataBinding
- 热门的第三方框架之类
- 热修复(继续不会 虽然关注这个技术很久了,但我的jvm才学完呢)
- 模块化(继续不会 说了同花顺里面没这个,后来就不继续问了)
- 问平时要是提的需求不合理会怎么办?(据理力争)问有没有争赢的情况?(忘记了 笑哭)
- 简历写了设计模式,问都会哪些,我说常用的,那常用都哪些呢?我说了单例、装饰者模式、模版方法模式,都具体讲了例子(因为讲了例子,所以说起来还挺有那么几分钟,所以没有问更多)
- (补充) 平时自己如何学习
- (补充)打包流程,build后的流程
最后我问了假如能进会做什么,了解到会是有赞零售部门的开发,面试官和我讲了项目组的人员构成等。我问了我的面试后续可能什么时候,说今天三八妇女节,一些hr放假了,所以得等几天,可能明天。最后问我是不是回去上班,让我带走了一开始拿给我的矿泉水,我们乐呵呵挥挥手告别。
有赞是一个年轻的公司,全员标配最新款mac air/pro,知乎上看到已经租下了黄龙大楼7层,现在不知道是几层了,给的起薪也比较高,是一家很吸引人的公司,希望有赞越做越好。
(补充)最后很遗憾有赞被拒了,表示职位需求和我个人状况不太符合。想想其实还是表现不好,面试中的知识点也还有很多没有去准备导致面试情况不太理想。
2. 蚂蚁金服全局架构部
3-2那天,蚂蚁大佬以名为开发专家的职位向我发起聊天。
收到这条消息的时候,我的心情是复杂的。本科一年经验小菜鸟完全无法驾驭这份工作啊,开发专家。但是既然机会来了,硬着头皮上!
于是回复了大佬,并发送了简历。
...
3-6日晚,19点多,正在公司偷发育,接到了来自北京的电话。该电话在我手机上显示已经被130+人备注为诈骗电话,心想难不成是骗子?想了想,万一不是呢?于是还是接了下来,对方一开口就说,我是支付宝...听到这里,我想:糟!真是骗子...
当然其实是面试官,后来说了是来面试的。抱着happy与紧张的心情,我左找右找,最后走到了楼梯里面进行电面。毕竟楼梯人少,大家都比较喜欢用电梯。
一面面试题如下:
- Activity的launchMode
- View的绘制流程 measure layout等都是干嘛的
- SharedPreference跨进程使用会怎么样?如何保证跨进程使用安全?(跨进程不安全我知道,但是如何安全我倒是真不知道。后续了解了一下才想起来,ContentProvider底层不就可以用SP来实现)
- 如何收集anr信息(也没想过)
- 因为是面的埋点相关的职位,所以还问了有没有做过埋点相关工作,问有没有用过growingIO这个软件等等
- 讲了下项目中卡顿优化的过程
- 多图加载机制(三级缓存,还提到了同花顺框架中使用弱引用持有bitmap对象的操作,但是后来了解到Android2.3之后,弱引用不可靠起来,已经不再使用了)追问了LruCache底层实现,只回答了个LinkedHashMap
- service的onCreate是异步的还是同步的(这个真的没有考虑过,后来想了想按猜测觉得是异步的,因为bindService方法也不是同步执行完的,connected的时候是异步回调回来的)
最后我问了一下我面的部门的工作内容,面试官很有耐心地为我进行了解答。
一面面完,一会儿就通知我下周一进行二面,地址是黄龙那边。我搜了一下地址,需要打个车过去,30分钟。
蚂蚁的后续会等这边的offer审批流程走完之后,我得到最终结果再来更新。其实参考价值不是很大,因为机缘巧合,面的技术不是很多。估计是按p5的等级来面。
蚂蚁这边的后续结果出来了,很开心收到了offer。
- 3-2. 投递简历
- 3-6. 技术一面
- 3-7. 技术二面
- 3-10. 技术终面
- 3-15. hr面,boss加面算法
- 3-27.收到口头offer
- 3-30.体检(今天)
参考价值不是很大,后续再把一些建议写一下。
蚂蚁二面
因为以为有赞一面是蚂蚁二面,导致二面电话来的时候,还在诧异?嗯?刚刚不是面过吗?面的还挺好的,聊了四十多分钟!
蚂蚁大佬boss听说了之后也很诧异,问我是哪里的,我说是支付宝的呀。。。
互相诧异了一会儿,于是boss进入正题。问我哪些方面比较强。我是jvm和java基础比较强。于是就问了两个问题:
- CMS了解吗?
了解了解,一款专注于吞吐量的垃圾收集器,用于老年代的垃圾回收。可能是大佬的气场镇压了我,我一时头脑空白。应该把垃圾回收四个过程也描述一下的。看我语塞,boss说,好我了解了。 - 那你说说jvm的内存分区
这个简单,报一下:分线程共享的,还有线程不共享的。线程不共享的包括内存java虚拟机栈,包含局部变量表等等、本地方法栈、程序计数器这样,然后不共享的有堆、方法区这样。这里打断,方法区里面类信息太多了怎么办?我一时卡住了,这个我真没想过。但是依稀记得有垃圾回收的机制,就傻傻答了应该要靠方法区的垃圾回收机制了,这个也over。后来再次了解,方法区可以通过自定义类加载器手动卸载类达到回收类信息的目的,不知道是否切题。
闲聊之中,boss大概了解了我的技术实力。 - boss问我过往业绩、比别人的优点、平时如何学习等等。猜测可能是考察潜力。
敲黑板!重点来了!!!
通过询问另外一个阿里的大佬以及这次面试的二面三面hr面,深刻体会阿里注重优秀这个品质。(我当然是很菜的)
二面 三面 都侧重于发现我的个人潜力,我个人觉得。因为问的技术不多,so 觉得技术上参考意义基本没有。
二三面和hr面都差不多考察了以下方面:
- 上一公司主要负责的内容,难点、贡献,假如是自己主动去实现、优化的部分,有具体业绩、领导认可赞赏等等的具现化表现更佳
- 平时学习什么?为什么学这些东西?拿来做过什么?紧接着就可能是以后的职业规划是什么?朝哪个方向发展等等
- 平时如何学习,展现自学能力
- hr那一面印象比较深刻的是:hr问我有没有炒股,用不用自己做的产品。我说我不炒股,他说,你自己做的不去用一下吗?不是很可惜?听到这里,顿时脑海很多东西浮现出来,觉得自己确实没有工匠精神。
hr面我表现得比较差,因为觉得到hr面了,差不多了,完全没有好好准备,居然什么问题也没有问,最后得知我的hr面面得非常差!
so 小伙伴们一定要多多关注一下hr面该如何表现,去找一些真大神的帖子攻读一下,多多准备!hr面也很重要!
(纯手机打,排版将就看看,不好意思,只有这一点点水货了)