2019Android面经 ---已拿网易云音乐内推offer

七月底收到网易云音乐的内推码,并不抱希望能进去,就想着锻炼一下,做好了简历进行了投递,也是第一次投递,没想到经过层层筛选拿到了offer,本人用了几年网易云音乐,也快十级了,能拿到这个offer真像做梦一样

以下问题仅供参考,因为每个人Android主要学的方向不一样,所以每个人问到的问题肯定也会有所不同

8月中网易笔试

笔试是在牛客网上进行的,20道单选一共20分, 4道算法题一共80分, 2道问答题一共20分, 算法题一道也没做出来, 第一题基本快做出来了, 问答题问了一道AIDL的, 我平时没涉及到过,就没做, 第二道题是问Handler, message, looper的, 大二跟着一篇博文好好看了一下源码,有点印象,就答上了。

过几天后网易一面

笔试完后其实就觉得自己挂了,毕竟一道算法题都没做出来,这几天也没好好复习Android的,面试实属来得有点突然,很多都是凭以前项目得记忆在答,其过程也比较紧张, 说话吞吞吐吐的,尽力去表达自己的想法

题目及回答:

  1. 自我介绍(简单介绍了自己从大一入学到现在大三找工作期间的所学所做)
  2. 介绍项目及其所用技术(刚开始有点紧张,说得有点不清楚,说自己用到了多线程,netty,service, okhttp, 自定义View等,反正能说的尽量说)
  3. 多线程怎么同步的(我说netty, notify, 消费者, 生产者模式, 阻塞队列,又是能说的尽量说)
  4. Synchorized关键字修饰静态方法与实例方法的区别(我直接就懵逼,跳过,后来去看了,主要是锁的对象不同)
  5. 有没有了解okhttp的底层(没有, 不清楚, 又跳过, 其实很久以前看过一点点, 但都忘了)
  6. 网络编程用了哪些(我说:okhttp, service, AsyncTask)
  7. http的header知道哪些(没去看,pass)
  8. http code(当时懵逼了,就pass了,其实自己知道,就是200, 404 ,500这些code)
  9. TCP, UDP区别 (说:UDP是尽最大力量传输,协议简单协议头好像就8字节(其实就是8字节), TCP较复杂, 有拥塞控制,滑动窗口,三次握手,四次挥手,且面向连接)
  10. Android oom怎么解决,有啥工具(我:handler内部类会与外部类绑定,可能会OOM,要记得在OnDestory中解绑与取消注册等,使用软引用或弱引用,在Application类中onLowMenory方法中释放一些不必呀的资源,工具的话确实没用过就说不知道)
  11. final关键字作用(我:修饰方法和类后使之不可改变,修饰变量时JVM会对其有所优化(这个是听别人说的,其实自己并不清楚))
  12. 不小心提到了JVM,于是被问JVW GC(我不是很了解JVM就强答了一下,以前看过回收机制,说了python的引用计数,然后又说了Java的图不可达)
  13. dp, sp, px的区别,其分别指代什么(我:sp用于文字, dp和px差不多有2倍差距,具体多少记不得了, 但用过)
  14. 听说你用过图片裁剪,请问怎么裁剪图片的一部分(不太清楚,跳过)
  15. Android四种启动模式与使用场景(基础知识,恰好又复习到了,就直接答上)
  16. HashMap get与put实现(说了hash表的冲突解决,怎呢确定位置等)
  17. Android事件分发机制(以前跟着一篇博文好好看了源码,但忘了很多了,想细说,但又说不清,面试官就叫我不要死扣细节,然后我就简单说了个大概)
  18. handler, looper, message(大概说了looper启动时就创建, handler发送message对象给messageQueue中,然后looper会调用loop方法去循环处理messageQueue中的message)
  19. 你说你使用到了换肤框架,你对换肤原理有所了解么(我:以前看过,好像是重启Activity,其他的也记不得了)
  20. Java堆和栈的区别(很久以前看过,也忘了,当时也没答上)

最后问我有啥问题,我就问面试完后还有几轮面试,我这次面试结果多久能出来(当时没准备这些,也不知道怎么问,就随便问了)
整个面试过程差不多半个多小时,主要问题就是第一次面试紧张,没经验,不了解底层

两天后小米一面

  1. 接口和抽象类的区别(看过, 说了面向接口编程,回调,抽象类能帮子类进行一些逻辑封装等)
  2. Java里属于值传递还是引用传递(我说都有,然后还分析了一波,结果他说只有值传递…)
  3. Java基本数据类型有哪些
  4. hashMap实现原理
  5. Synchorized关键字作用
  6. ==和equals区别
  7. 主方法中有一个String a = “一个字符串”, 传入一个方法中 a = new String(“另一个字符串”),那么a = ?
  8. Android四种启动模式及其应用
  9. Android中从A活动到B活动的执行生命周期
  10. 反射有了解么,在Android中的应用?
  11. OOM可以被捕获么?(很奇怪的问题,当时分析了一波,分析到了Android虚拟机和内核,说可以被捕获,其实确实可以被捕获,try…catch中的可以)
  12. 斐波那契数的递归会导致什么异常(Stackoverflow)
  13. 一道算法题(一个人站在一棵二叉树哦的左边,问能看到哪些节点,打印出来,面试官很好,引导我,然后我写了一个层次遍历,还是没做出来,但也没做多久)
  14. 讲一下设计模式六大原则
  15. ArrayList和LinkedList区别
  16. Android6.0, 7.0, 8.0 新特新
  17. 重写equals与重写hashcode

小米一面的收获很大,首先第一个问题就告诉我不要着急回答问题,你可以思考一下,然后很多问题其实都是一起在答,或者说引导我,比如设计模式那个,还问我面向接口编程,接下一句话,我说:不要面向实现,而且自从小米一面后,我的网易二面及现场面都不紧张了,回答不上的问题,想一下再说,不要急

不久后网易二面

  1. 叫我不要紧张,自我介绍(还是介绍自己大一到大三所学所做)
  2. 让我讲述一下第一个项目,用了什么技术,有自己觉得做的很好的地方么,有哪些难点?(第一个项目有点久远了,介绍了一些遇到的困难,主要是逻辑很复杂,然后又是因为这是自己初学Android的第一个项目,感觉做得有点难受)
  3. 你多线程用在哪?线程同步体现哪?
  4. AsyncTask源码有看么(我说:没看,但我知道它其实就是一个拥有5个核心线程128个最大线程的线程池)
  5. 在那个项目中为什么不用线程池(没必要,线程不多,也不会经常创建删除,另外就是当时刚做这个时不太了解线程池)
  6. okhttp使用过程讲一下(因为一面问过我,所以我连源码都去看了,先讲了全局共享的okhttpClient然后讲了okhttp中有一个线程池,然后讲了一下使用流程)
  7. 你讲讲第二个APP你主要用了什么技术,怎么实现的(第二个APP我全程操刀,还重构了一次代码,所以印象较为深刻,然后主要讲了自定义View,事件分发机制,其实用的东西并不多,主要是界面)
  8. 我看你APP中有很多按钮都是文字加图标的形式,你是怎么实现的(相对布局加drawable文件中的layer)
  9. 你为什么用TextView放图标,你的图片为啥不用ImageView(我说我用的图标都是矢量图)
  10. 你首界面的View是怎么实现的,用到了canvas的旋转么?(没用,讲了Android座标系,然后说我都是用数学的方式计算出位置来的,比如距离顶部1/16 * height等等)
  11. 自定义View怎么实现(复杂的View可以继承自ViewGroup,在里面可以做很多操作,比如layout布局,添加其他View控件,或者是View的onDraw方法,直接进行绘制我那个自定义View就是这么实现的)
  12. 你说到了ViewGroup,你说下ViewGroup中经常重写的几个方法(onLayout用于布局,onMeasure用于测量控件大小,还有就是构造方法中可以自定义xml属性等)
  13. 你怎么实现取色的?(我说:不是有一个十字么?移动放大缩小图片中自己想要的点到十字处去,然后通过数学的方式,计算这个点对应图片中点的位置,取出其RGB值)
  14. 你讲讲事件分发机制,你怎么用的?(我:在切换页卡时滑动事件可能会与图片的滑动事件相冲突,所以这里就要对点击滑动事件进行判断,判断其点击位置,然后确定是滑动图片还是滑动页卡)
  15. 你这个弹窗是怎么实现的?(我:popWindow)那你讲一下(就简单讲了一下)
  16. 用过Dialog么?(我:用过)了解么?(我:不太了解,平时就只是把它当作普通的对话框使用)
  17. dp, px,sp(复习漏了…)
  18. 你说你有参加过ACM比赛,讲一下(我:12月份去交通大学参加的,当时我做了一道题,是说一个m * n的矩形,判断是否能够折成一个正方体,题目给出了边长为1的正方体的所有展开图,其实算不上什么算法,应该算是根据小问题推解大问题的过程,当时险些做出来,就差零点零几毫秒)
  19. 除此之外,你还做了哪些东西?(我:做了很多demo,跟着网上的教程还做了一个电商APP,学到了简单的组件化开发,学做了一个网络请求框架,接触了Fragment的一个框架,还知道了Fragment懒加载)
  20. Fragment讲一下,懒加载怎么实现的?(简单回答)
  21. 你为什么不在你的第二个APP中使用Fragment呢?
  22. 你最近有学什么新技术么?

我的问题:
23. 你觉得我在这次面试中有哪些回答得较好,哪些回答较差(他说:总的来说还不错,挺好的)
24. 你觉得对于我这种应届生, 所应聘的这个岗位,我还差哪点,哪些技术栈(他说,其实的话,主要还是缺乏实践,真正的项目不像你平时做的demo那样,会考虑到很多,必须测试通过,还需要很多项目经验)
25. 日常问面试结果通知时间

8月28号网易现场HR面

到了现场面其实反而不紧张了

  1. 自我介绍
  2. 讲一下你最得意的APP(第二个)
  3. 这个APP有哪些技术难点(数学计算困难)
  4. 你是怎么学习Android的(csdn, 简书, GitHub拉项目看代码)
  5. 你觉得杭州怎么样
  6. 你有哪些兴趣爱好
  7. 你有哪些缺点
  8. 对于上午的宣讲你有什么建议
  9. 你单身么?
  10. 你为什么不去实习
  11. 你有没有想过考研

8月28号网易现场总监面

总监面感觉很难,很多都答不上

  1. 自我介绍
  2. 创新实验室是什么?
  3. ViewPager滑动卡顿(已经懒加载,页面自定义View也优化)
  4. okhttp源码
  5. handler, message, looper
  6. 裁剪图片
  7. http, header中与缓存相关的头
  8. cookie是个啥
  9. OKIO有了解么
  10. 数据库索引
  11. 组件化开发,什么是组件化,组件应该满足什么条件
  12. 日常生活中你是如何避免重复工作的
  13. View动画实现方式
  14. 最近有在了解新技术么
  15. 怎么学习Android的?
  16. 换肤原理,有了解换肤框架原理么?
  17. 为什么大三不实习
  18. 为什么想搞一个换肤呢?具体需求?
  19. 自定义View中有一个四参构造方法,请问后两个形参作用?

另外本人双非大学,连四级都没过,但现在大四,打算大学里面把它过了,能拿到offer真的很意外也很高兴,也感谢网易,让我第一次做了飞机,哈哈哈,坐飞机去的,然后又做动车回来,贼累,网易食堂确实好吃,但是人蛮多的,特别又是夏天,比较热,也祝大家都能拿到心仪的offer

最后贴上几张自己做的那个APP的截图吧
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章