“创业吃过饼,这些面试题你会吗

上市公司

之后我来到了我现在待的这家公司。比起我之前待的创业公司就我一个Android开发,在这里我算是找到了失去很久的团队归宿感。大公司除了人多以外,工作的强度和难度也大大地增加,加班当然也成为了家常便饭,当然与之相对应的福利也是提升了不少。

在大公司,技术水平并不是决定这个人发展潜力的决定性因素。要知道大公司最不缺的就是人才,能进大公司的,哪个不是有两把刷子的呢?对于大公司而言,他们需要的是拥有极强责任心以及任劳任怨的员工,能否承担某一模块功能的稳定性就直接决定了你的去留。

除此之外,沟通能力也是非常重要的能力。因为大公司的项目功能相对复杂,参与的人员众多,很多复杂的问题往往可以通过沟通予以解决。而且及时表达出你的想法,主动承担一些紧急的任务都能给你很多的加分。可以说在大公司的这些日子里,让我学习和领悟到了很多非技术方面的能力:

  • 语言表达能力(大公司经常需要在很多人面前发言)
  • 与不同人沟通的能力
  • 复杂问题的定位和解决能力
  • 团队协作能力
  • 帮助(指导)他人的能力
  • 团队建设和管理的能力

上面的这些能力,很多是仅仅靠撸码是无法获取到的。

心态上发生变化

我从事Android开发的前三年,之所以那么拼命地工作和学习,一部分是出于兴趣,而另一部则是想要证明自己。

  • 对于公司而言:我要证明自己是公司不可或缺的人才
  • 对于领导而言:我要证明自己的技术水平是组内第一
  • 对于家人而言:我要证明自己有能力养活自己
  • 对于女友而言:我要证明自己有能力独自照顾一个人

**马斯洛需求层次理论告诉我们,当一个人的需求得到满足之后,他会追寻更高层次的需求。**当这些都被我一一证明了之后,一切都变了。

证明自己已经显得不那么的重要,追求自身价值的体现成为了我现阶段的目标。于是,我离开了当年的那家公司,放弃了父母规划的道路,离开了女友,开始遵从着自己的内心,寻找人生的答案…

此时的我,需要的并不是别人的肯定。我并不会在意别人的赞赏或者是诋毁,我所做的都是发自内心的事情,而不随外物而影响。于是,我选择成为了一名开源项目的创作者和布道者。将我平时积累的技术经验全部分享出来,目的就是帮助全世界所有热爱技术的人士,同时让我的价值在别人身上得到体现。

在这三年内,我积极维护我开源的项目,同时还在各大技术社区和论坛上发布一些相关的技术文章,同时还运营了自己的微信公众号。近期,我还积极创作一些开源技术相关的视频。这样做的目的,一方面是可以把自己的经验和技术分享给更多需要的人,让知识发挥它更大的作用(知识在于传承), 另一方面也是满足了自己的虚荣心,让自己的价值得以体现。

  • 夹带私货,欢迎来我主页关注,点赞,可点击上文蓝色字直达。

思维方式发生变化

从事Android的前三年,我的想法是相对激进的。那时的我,对所有的新技术都是那么的趋之若鹜,而对于那些相对陈旧的技术是嗤之以鼻。我天真地认为那些新技术都是革命性的,都需要去掌握、学习并运用到实际的工作中去,而那些旧技术就是需要替代的对象。

于是,我就不计代价,大张旗鼓地把公司之前使用的旧技术一股脑地都准备换了,而当时领导的处处阻挠在我看来就是技术上的不思进取,中间还闹了不少矛盾,这也成为了我后来离开公司的原因之一。现在想来,当时的我想法真的是非常的幼稚!

技术不是唯一的生产力

技术是生产力,但并不是唯一的生产力。

在创业公司的那一年里,让我彻彻底底地明白了,技术并不是唯一的生产力。一家公司的发展,更多靠的是强力的融资能力(资本),强大的渠道推广能力(营销),很多时候技术只是其中的一部分,充当的仅仅是工具人的角色。

当年那个极力崇尚技术至高无上的青年被现实狠狠地教育了一把。那时的我认为只有纯做技术的才能被人尊重,而那些在产品线做业务、测试,或者跑业务跑市场的人都是不值一提的。然而也正是我那时瞧不起的那些人,直接导致了我待的那家创业公司的衰败。

技术没有好坏

技术没有好坏,更没有高低贵贱,有的只是合适与不合适。

新技术一定比旧技术好吗? 如果这个问题在两年前问我,那么我的回答一定是肯定的!但如果你现在问我,我的回答就不一样了。任何的新技术一定是在旧技术上有了一些改进,否则它就不为是一项新技术。那么我们为何不直接使用它呢?因为这里我们考虑的更多是成本的问题:

  • 新技术必然带来更高的学习成本
  • 新技术的引入必然带来更多的替代成本
  • 新技术如果尚未成熟,当遇到一个坑时必然带来更大的解决成本
  • 如果使用新技术遇到一些无法解决的问题,会带来一些风险成本

当一项技术的使用所带来的收益要远远大于它带来的成本时,这个时候我们才会考虑采用这项技术.可以看到上述我列举的成本对于大公司来说是相当巨大的:

  • 大公司的人员较多,新技术的学习成本非常高(不可能全裁了重招吧)
  • 大公司的项目通常偏大,替换的成本相对较高
  • 大公司产品的功能较为复杂,碰到一些没人遇到过坑也是常有的事
  • 大公司对项目的风险一般是零容忍的:宁可不做也不能冒风险

这也是为什么很多大公司不愿意采用新技术,而是选择沿用之前成熟的技术的原因。所以我们在思考一项技术能否被我们采用的时候,压根就没有考虑过这项技术的新旧以及高低贵贱。至于那些成天在技术社区里发一些技术焦虑文章的人,我觉得社区就应该屏蔽他们,以免误导那些刚入门的小朋友。

追本溯源

当你抛开事物的表面,去追寻其本质之后,你会发现很多东西都是相通的。

两年前我在学习和使用技术的时候,更多的是遵循拿来主义和实用主义,天真地认为我会用这项技术就等于我掌握了这项技术。之所以这么想,归结原因还是见的世面太小了。之前待的小公司,业务并没有那么复杂,用例也没那么多,遇到的情况也相对简单单一,所以简单地使用基本就完事了。

然而,到了大公司之后,那业务的复杂程度以及用例覆盖到的场景远远是你所想象不到的。很多时候,一些问题你是不能通过简单的使用就能解决的。尤其是发生一些诡异的问题时,你不阅读源码了解其实现原理,是无法进行解释的。

举个例子,我们做Android的都用过RecyclerView,可你有阅读过RecyclerView的源码,了解其缓存机制吗?相信你看完RecyclerView的源码之后,你就会知道,其实你所谓的掌握RecyclerView,只不过是RecyclerView的冰山一角。

学习一项技术,如果你只是掌握了如何去使用,那么这只是你迈出去的第一步,后面更重要的是要追本溯源,深究其底层实现原理,这个时候你才会发现,很多技术原来是相通的。

最后

作为一名Android开发的热爱者,只要Android不死,我就会一直在Android开发的道路上前行。无论前途如何曲折,我相信Android会变得更加美好!同时我也愿意持续的帮助更多想在Android这条道路上持续走下去的朋友,这也是我一直坚持写作,做技术和经验分享的初衷。

最后的话我想将上文中提到,我这些年来整理的一套Android进阶学习方法及笔记分享出来,如果你瞧的上的话,记得三连这篇文章支持下我,然后在文末自取便是!

  • 架构师筑基必备技能

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO

架构师筑基必备技能

  • 设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计

设计思想解读开源框架

  • 360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

4、项目实战

  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践

360°全方位性能调优

  • Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

本篇知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析

Android框架体系架构

  • NDK模块开发(音视频系列)

NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

本篇知识要点:
**1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程

最后

我的面试经验分享可能不会去罗列太多的具体题目,因为我依然认为面试经验中最宝贵的不是那一个个具体的题目或者具体的答案,而是结束面试时,那一刻你的感受以及多天之后你的回味~

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家

在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【算法合集】

【延伸Android必备知识点】

【Android部分高级架构视频学习资源】

题解析】**

[外链图片转存中…(img-myJ0iOpm-1630589982305)]

【算法合集】

[外链图片转存中…(img-1n67yPW9-1630589982306)]

【延伸Android必备知识点】

[外链图片转存中…(img-eBY8OzwH-1630589982306)]

【Android部分高级架构视频学习资源】

**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值