2018阿里春招客户端面试题目(初面)

职位要求

以下是阿里客户端实习生职位的职位要求以及面试题目,这些内容是自己接下来一段时间的目标,加油哟

  • 如果你,期望参与跨平台Native中间件开发;
  • 如果你,期望参与跨平台网络中间件、H5容器、Native容器的开发;
  • 如果你,期望参与语音识别、图像识别、地理围栏、虚拟试妆、3D建模、AR/VR等领域的开发;
  • 如果你,期望参与无线电商的首页、交易主链路、登陆、店铺等基础组件维护与开发;
  • 如果你,期望参与iOS、Android等系统平台整体架构设计、运行期性能优化、设计动态化可扩展的组件、框架、容器,提升整体研发质量和效率;

那还犹豫什么,赶紧加入我们吧!

岗位要求

  • 熟悉iOS/Android平台原理机制,具备客户端性能优化的经验有一定软件架构设计能力,熟悉常见的异步、同步、多线程、跨进程、组件、容器的设计方法
  • 具备扎实的数据结构和计算机系统基础,编码功底扎实
  • 具备C++跨平台开发经验,熟悉NDK开发优先
  • 具备创新业务技术攻关和落地能力者优先(不限于算法、生物识别、图形图像、3D建模、AR、多媒体等领域)
  • 具有优秀的分析和解决实际问题的能力和态度,有创业的激情
  • 重视用户体验积极尝试各种新技术选择最佳实现与我们的产品有效结合,从中获取喜悦和成就感
  • 英雄不论出身,专业和学历都是过眼云烟,我们在乎的只有你,有你的加入,是我们最大的荣幸!

面试题目

  • synchronized是什么?怎么用的?
  • 泛型了解吗?在什么地方用到?
  • volatile
  • 垃圾回收机制了解吗?它是如何标记无用对象的?都有什么代?栈中是什么代?
  • jvm
  • 类加载
  • 排序算法了解吗?你都知道哪些排序算法?说一下它们的时间复杂度?其中哪个最快?
  • 一个未知长度的单链表,如何查找到倒数第二个结点?

    设置两个指针p,q,p在前,q在后,令p先走一步,之后p每走一步q跟着走一步,当p走到最后时,q指针指向的结点就是待查找的结点

  • 内部类了解吗?为什么内部类访问的外部变量需要使用final修饰?
  • 开放性题目, 有100个苹果,其中一个苹果与众不同,假设其他的99个苹果重量是相同的,那么最少称几次可以找到?最多几次?有更好的方法吗?(我说了个类似折半查找的思路之后询问了有没有更好的实现方法)
  • 计算机网络了解吗?
  • Android的生命周期中,onStart()onResume()的区别?

    onStart()被调用时Activity可见,但不可交互
    onResume()被调用时Activity可交互

  • 组件通信了解吗?使用什么方式?

    • Intent可以传递对象吗?(我回答的是:可以传递序列化之后的对象)
    • 序列化了解吗?有几种方式?它们的区别?
    • 在使用Intent 时需要注意什么?
  • 异步的方式有哪些?(我回答的是Handler、AsyncTask)
  • 在使用AsyncTask时需要注意什么?怎么解决?(我回答的内存泄漏)
    • 你使用什么工具监测内存泄漏的?
  • 在非UI线程中可以操作UI吗?(我回答的是不可以)
    • 在非UI线程一定不可以操作UI吗?
  • mvc与mvp的区别?
  • SharedPreferences用过吗?使用的时候需要注意什么?

    1.不要存长度大的key和value,会引起界面卡、频繁GC、占用内存等等
    2.毫不相关的配置项就不要丢在一起了,文件越大读取越慢
    3.读取频繁的key和不易变动的key尽量不要放在一起,影响速度。(如果整个文件很小,那么忽略吧,为了这点性能添加维护成本得不偿失)
    4.不要乱edit和apply,尽量批量修改一次提交!
    5.尽量不要存放JSON和HTML,这种场景请直接使用json
    6.不要指望用sp的FLAG:MODE_MULTI_PROCESS进行跨进程通信
    可以参考Android请不要滥用SharedPreference

  • 你的app是单进程还是多进程的?

  • 你对你的软件做过性能优化吗?有哪些性能问题?如何解决的?(我回答的内存泄漏)
  • 网络请求框架用的什么?看过它的源码吗?了解它的实现原理吗?
  • 一个应用从启动到可见,经历的过程?提示:Application
  • 你有跟进Android新版本的特性并做适配吗?(我回答的有)
    • 说一下6.0、7。0、8.0版本的大的特性?
  • 你的app适配到了哪个版本?
  • 你的app的Target版本号?
  • 说一下LinearLayout、RelativeLayout各自的特点?哪个性能更高?(我的回答:Relative可以减少布局的层级)
    • 使用Relative后 没有减少层次布局的情况下,哪个效率更高?为什么?
  • 你关注过谷歌发布的最新动态吗?
  • 你是怎么学习的?看书还是什么?(我回答的是看书还有博客)
    • 你有关注过并系统的看过一个人的博客吗?
  • 设计模式了解吗?说一下什么是里氏置换?(这个问题我记不清了,没答上来)

总结

大致问题就这么多了,还有一些记不起来了。面试中回答的非常不好,一个问题如果你会的话,面试官会一直往深了问,直至答不上来就换个问题继续问。

顺便制定一下自己下一步的学习目标:

  • 看书<<深入理解jvm>>
  • 数据结构和算法
  • 设计模式
  • 关注谷歌动态
  • 做一个有一定技术含量的软件并上架
  • Androi的基础也需要巩固

要学的东西还很多,继续加油!

你可能感兴趣的:(Android技术)