安卓平台软件开发!4年小Android的心路历程,面试心得体会

前言

从2010年开始Android市场开始需要大量的Android开发人员,招聘市场上也开始大量招Android开发人员,大量java开发者开始学习Android开发,招聘市场面试要求上只要有一定java语法基础,都很容易应聘上Android开发的岗位,因为那时候国内Android开发的需求刚刚起步,从事Android开发的人员很少,到2011-2012年,只要有一年左右的Android开发经验,那时候在一线城市很容易拿到10K的起步薪资,那时候市场Android开发的市场空缺大概有30万左右。

这时候大量软件培训公司开始大量培训Android开发人员,一时大批开发者或者大学毕业生开始涌向移动开发,当然此时也是移动互联网大势发展的时候,一大批互联网创业公司也开始出现,当时号称只要做个App就可以开始创业了。

到了2016年年底时,市场上Android的招聘需求大量减少,当然这时候有一批相应的创业公司已经衰退,对应培训市场上已经不再把Android开发作为热门核心的培训科目,到现在创业也不用一开始就做一个App就可以开始了,现在越来越讲究精益创业,刚开始推崇最小化可行产品。

现在越来越讲究效益和成本,比如现在只需一个小程序,一个微信公众号,一个视频,一个微信群或者QQ群,甚至只需要经营你的朋友圈就可以开始你的初期创业想法。

当然一些新技术的不断更新与迭代,新技术的层出不穷让我们本身对Android开发水平还没有达到理想状态时已经产生各种焦虑和担忧,比如前段时间快应用的出现,今年小程序的火爆,各种混合开发,跨平台开发已经让我们学习跟不上脚步,就算我们在Android原生开发中也出现各种框架,各种开源库,以及各种大型项目的构建技术和细分领域的技术比如NDK,音视频、逆向技术、图像技术等等已经让我们应接不暇。

以上种种让我们产生了移动Android开发已经凉了,有人有这样的比喻,现在学习加入Android开发,犹如1949年10月加入GMD。确实移动市场没有之前的火爆,但是移动开发真的凉了吗?

一面

  • 自我介绍
  • 介绍一下自己做过什么项目 ps:这里会根据项目问一些问题
  • 跨线程通信 主要涉及LooperMessageHandler以及MessageQueue
  • 说一下自定义View需要注意哪些细节 主要说了一下View绘制的三大过程onDraw()不要做耗时操作 不要创建新对象 以及 怎么处理View的触摸事件
  • View的事件冲突的解决办法 ps:重写dispatchEvent()或者touch()方法
  • 手写代码:给你一个无限大的数(用字符串表示),计算这个数加一以后的结果 手写代码在这个网站进行 ps:面试官发给你一个链接 你写代码面试官会同步看到

二面

  • 手写代码 两个有序链表合并成一个有序链表
  • Object中有哪些公有方法 ps:clone();toString();wait();notify();getClass();finalize();equals();hashCode();
  • 讲一下listView的优化方法
  • 讲一下RecycleView与listview的区别
  • view的绘制过程

阿里

  • 问了一下大体情况 比如什么时候可以实习啊 考不考研啊
  • 都会什么算法 讲一下
  • 做过什么项目没有 讲一下项目优化的地方
  • Activity的启动模式
  • 跨线程通信
  • 夸进程通信 主要是Android的AIDL
  • 如何解析json数据和xml

蘑菇街

  • 说说做了什么项目
  • 自定义view的几个步骤 怎么刷新view ps:onLayout(); onMeasrue();onDraw();
  • RecycleView的优化
  • 几种context的区别
  • 看过什么源码没有
  • 讲一下binder类
  • Runnable运行在哪个线程里面 ps:开启一个子线程的唯一方法就是new Thread().start();
  • HashMap和HashTable的区别
  • raw和assets文件夹的区别
  • activity关闭后尚未运行完毕的thread会怎么样 ps:会变成空进程线程,优先级最低 很容易被终止回收
  • mainfest文件的合并规则

网易

网易内推后笔试,过了笔试后去杭州面试 ps:报销来回车费 报销上限是600元 这个回来没记 可能不全

一面

  • 自我介绍
  • 跨线程通信
  • 讲了其中一个项目是怎么实现的 问jsoup怎么拼 = =
  • 用过哪些开源库 讲一下他的架构是怎样的
  • java的四种引用 虚引用的作用
  • 图片三级缓存 内存缓存满了怎么办 ps:优先级队列 满了后根据优先级主动删除一部分图片 根据LRU算法确定优先级
  • 讲一下JNI开发的过程 java怎么找到c函数 ps:JNINativeMethod保存函数对应关系
  • 平时有什么爱好没有 = = ps:潜泳 可以潜好几天 然后自己浮上来

二面

  • activity的四中启动模式
  • service的生命周期
  • 讲一下自己的项目
  • 项目中用JNI做什么 为什么要用他呢
  • 什么是OAuth协议 做什么的
  • 其他的记不清楚了

hr面

  • 什么时候可以来实习 实习多久
  • 多个offer怎么选
  • 你有团队开发经验 内部冲突怎么解决
  • 你觉得杭州怎么样
  • 为什么选择网易
  • 用过网易什么产品 ps:吃过网易猪肉
  • 其他忘记 好像聊了好久 得一个小时吧

要如何成为Android架构师?

搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;

对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,在这里点击GitHub免费分享,希望能帮你突破瓶颈,跳槽进大厂;

最后我必须强调几点:

1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。

你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境

3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。

你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境

猜你喜欢

转载自blog.csdn.net/a120464/article/details/114378513