结尾
- 腾讯T4级别Android架构技术脑图;查漏补缺,体系化深入学习提升
- 一线互联网Android面试题含详解(初级到高级专题)
这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率
有Android开发3-5年基础,希望突破瓶颈,成为架构师的小伙伴,可以关注我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
为什么会想写这篇文章?
前面我写过一篇关于独立思考的文章-你是怎么思考的?[1],大家感兴趣可以去看下。关于独立思考,我觉得每个人都应该要有,作为一个成年人,很多事情都要别人讲得很明白才懂得怎么去做,那别人也不太愿意把事情交给你办,也不太相信你能办好,你也很难掌控自己的命运。今天的这个主题虽然讲的是程序员解决问题的能力,其实也还是讲独立思考的能力,因为解决问题的能力也是源自你是否会独立思考。之前写过一些文章,有的同学想让我写写在鹅厂的一些经验,其实说真的,在鹅厂工作也是因人而异的,不管在哪里工作最终还是取决于你是怎么赋予工作的意义,每天纠结自己工作重复繁重,纠结工作技能得不到提升,纠结薪水满足不了自己的欲望,纠结这纠结那是毫无意义的。问题的根本也不在于这些,而是你是否足够沉得住气去提升自己。如果你连日常工作的一些问题都解决不好,你也别期望自己能在很短的时间内提升很高的水平。还是那句话,就算你有十年的工作经验,如果你只是一年的工作经验用了十年,那真的怪不得别人比你厉害了,人到中年的时候那真的有危机了。
吐槽一些开发者白纸一般的脑袋
之从做了SDK开发者之后,每天帮助用户解决各种各样的问题,那我真的有理由相信为什么国外的月亮会比国内的月亮圆了,因为国内的一些开发者真的让我很方啊。国内的开发者复制黏贴的能力是一流的,嗖得一声就能把功能实现,感觉好厉害的样子(皮皮虾,我们走)。集成我们提供的SDK的时候,也是嗖的一声遇到问题不知道怎么解决。
小白开发者A:为什么升级弹窗提示不了?我已经完全按照文档集成了啊,求救啊。。
小白开发者B:为什么集成热更新SDK之后,修复不了我的问题?
小白开发者C:集成SDK之后,编译出错了,谁能帮忙看下。
小白开发者D:怎么开启混淆啊。。。
小白开发者E:为什么没有mapping文件。
小白开发者F:为什么接入SDK之后,没有看到log。
小白开发者G:这个异常怎么解决?
更多。。。
虽然标注的是小白开发者,但我也遇到很多工作好几年的开发者同样这样问问题,这个已经不是经验上的的问题了。换个角度思考一下,如果别人向你这样问问题,你会理睬他么,说真的我还不如利用这些时间多修几个bug,很多开发群最终都会沦为水群就是这个道理。大家都有当小白的经历,人生这一辈子不懂的事情太多了,那你总不能让别人牵着你走,作为一个程序员要对得起程序员这个称号,作为一个工程师,你是否能体现自己工程方面的能力。如果连基本的解决问题的能力都没有,那还是尽快放弃当程序员,这一行当没你想得这么好玩。
怎样才算具备解决问题的能力
我先说一下我的一家之言吧,说这些并不是为了吹嘘自己能力有多强,只是把我看到的和想到的东西用文字说出来,至于别人怎么去解读我是无所谓的。
第一点:主动尝试解决问题
程序员的解决问题能力不是天生的,自然得靠后天的经验积累。我们工作中会遇到各种各样的问题,比如需要去跟踪调试产品所产生的bug,又比如说使用第三方组件所遇到的一些问题,再比如说使用一些插件或者IDE所产生的一些编译问题。这个时候第一反应不是去别人那里寻求帮助,而是自己尝试去看去解决问题。首先得确定这是一个什么样的问题,对这个问题下一个定义,看它是自己编码上的问题,还是一些编译上的问题,再或者是第三方库引入的问题。确定之后,你可以根据运行时产生的崩溃信息或者编译时出现的编译错误,找到错误的根源。如果是代码上的问题其实是很好定位的,我们只需要根据错误的堆栈找到出错的地方,然后你再去看这部分代码的处理逻辑,只要不是特别复杂的业务处理,基本上能很快解决。如果是编译时出的问题怎么办?你先看具体的编译错误是什么,看自己以前是否有遇到过,是否能够确定是什么环节导致的编译错误,比如是开发环境版本问题,或者是插件的版本问题,又或者是代码导致的编译问题,这类问题只要逐个排除相信也能够轻松解决。那如果是业务逻辑导致的问题怎么办?那我就建议你自己根据需求重新梳理清楚业务逻辑,可以通过debug来验证你的结果,又或者可以通过日常写单元测试用例来保证业务逻辑的正确性。关于各类问题的解决,解决办法总是能找到,就看你是否足够耐心去寻求解决方案。
第二点:学会提问
刚才说的第一点,对开发者能力有一定的要求,并不是所有开发者都能够做到这一点,那如果依靠自身能力解决不了问题该怎么办?没错,就是向别人提问,但这里要注意一下提问的技巧,就不要像我所吐槽的白纸一般的开发者。关于提问的技巧很多人都在提,感同身受最深的应该是那些为开源项目做贡献的开发者了,只要一开源就必定会有很多人过来问问题,提issue。以我作为SDK开发者来说,我希望开发者这样向我提问:
- 首先态度诚恳,平等尊重(这很重要)
- 问题标题有针对性
标题指明环境、错误时机、现象。如:
较差的标题(×):发现一个兼容性bug(太宽泛,完全没有点进来看的欲望)
较好的标题(√):Vivo X5上xxx SDK调用初始化时导致崩溃的兼容性问题求解
- 问题描述详细
问题描述详细,可以方便其他用户帮您定位问题。尽量提供详细的环境、错误时机、堆栈、日志、现象、截图等等。
可以参考如下格式:
【问题描述】
描述出现问题的环境:Android版本、设备型号、网络状态、SDK版本等等
总结
学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
最后如何才能让我们在面试中对答如流呢?
答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:
这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作!
这些只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢再关注一下~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!