热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

android新手入门!2021年移动开发者未来的出路在哪里,通用流行框架大全

前言今年是转折的一年,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一
前言

今年是转折的一年,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一份工作,很多需要大厂面试经验和大厂面试真题的小伙伴,想提前准备刷下题。接下来分享一份我的字节跳动、阿里巴巴、百度、小米等大厂面试经验和总结。(文末附真题解析大全)

程序员职业发展路径有哪些选择?

我们再说说第二个话题,程序员职业发展路径有哪些选择?

程序员一般的发展方向主要是几类:技术专家、架构师、技术管理、管理、产品。

接下来通过例子和大家分享以下四种不同的发展路径及适合走这四类路径的人群的三个关键词。

第一类,程序员-高级开发-技术专家路线

我们通过例子来说明。有一位 Z 先生,他2012年从湖北工业大学毕业,而后去了搜狗担任工程师,做了两年后,跳到了另一家公司叫小麦公社,是当时一家风头正劲的创业公司,担任 B 端高级开发,后来去到了因果树担任 B 端的技术资深开发,在今年2月份入职了杭州阿里巴巴,同样是负责 B 端商家后台部门,担任技术专家,他职业规划最大的亮点是找到自己想要专注的领域并且一直坚持至今。

第二类,程序员-高级开发-架构师

再看个例子,H 先生,他2011年北航毕业,而后选择创业做 SAAS 平台当时担任前端负责人,两年后选择加入搜狗成为一名高级前端工程师,后来去到了音悦台担任架构师,目前在一家创业公司担任前端架构师,他职业规划的最大亮点是在前端领域各个方向都深入见解,而后负责多条产品线的架构设计。

那以上两种技术路线有什么不同呢,应该如何选择呢?

技术专家,是偏理论研究的,对某个或某些相关的专业领域深入了解,能直接或通过提供思路间接解决这些领域的各种问题。

架构师,是偏工程实践的,与技术专家的区别在于它需要一专多能,提供方案解决问题已经不是它最重要的价值,它的价值体现在选择性价比最高的方案;

举个例子,其实你可以把技术专家和架构师的区别类比成科学院院士和工程院院士,你要搞一个语言识别,那是理论,你要做一个 Siri,那是工程。而你,更擅长和向往做语言识别技术还是 Siri 呢?

有些同学可能会说,我的最终目标仅仅是成为一个优秀的程序员,那我想知道你能做到以下 3 点吗?

  1. 写的程序不需要格式化,也是非常标准的,我见过很多程序员写的代码,连空格的使用都没有标准,从上到下给人的感觉就是一片混乱的字符的组合,好的程序应该像诗词,在格式的约束下追求飘逸。

  2. 写的程序没有无用的代码,其他人来评审时找不到无用的代码,也无法在保持同样阅读性的情况下进一步精练。

  3. 在可读性与效率中保持平衡,通常情况下我们优先考虑可读性,但是对于频繁执行的部分,可以牺牲可读性保证效率,但需要书写足够多的注释,注释不要说代码的用途,而要说自己写代码时思考的内容,我就曾经见过有人把一段代码使用自己的思想来改写提高可读性,结果这个代码的目的是越精简越好,这其实就有点好心办坏事了。

如果还不能做到以上几点,那就好好做好明天的事儿就好了,暂时什么都先别想,因为成为一名优秀的程序员是技术路线的基础。

接下来说说第三类,也就是管理路线:程序员—资深工程师—技术经理(技术管理)—技术总监(管理)—CTO(管理)

我们再来看个例子。Q 先生,他在 30 岁就成为了某知名共享单车公司的 CTO,说一下他的职业规划,2009 年首都经理贸易大学毕业加入一家创业公司担任开发移动端工程师,两年后加入 360 担任资深研发工程师,而后加入新浪微博担任移动端部门的技术负责人,而后加入了宜信担任技术总监,在去年 7 月加入共享单车公司担任 CTO。他职业规划的最大亮点是一直在核心业务上往技术管理进阶,最终成为一名优秀的管理者。

谈到这类管理路径,必须要说明下技术管理和管理的区别,技术管理是事情为中心,管理是以人为中心,技术管理主要工作是保证事情能按时按质完成,管理需要考虑团队的士气和稳定性、阶梯性。

最后说一说第四类,也就是技术转产品:程序员—高级开发-产品技术—产品经理—产品管理

在这里,X 先生带来一个海龟码农成功转行产品经理的故事,2009 年毕业于美国工程类名校普渡大学,而后回国在一家外企担任开发工程师,一做就是 5 年,2014 年一个幸运的机会加入了腾讯,当时腾讯面试了 7 轮,拿到了 T1-2,月薪 1W2 的工程师 offer ,基本是刚毕业一年左右应届生的水平。在腾讯主要做手机 QQ 红点系统,做了两年,他从未抱怨。他也给我们展示了所谓“红点”,其实就是手机 QQ 上不同接口旁的红点引流。手机 QQ 流量日活上亿,但是会点击那些游戏、商城、音乐等接口的用户大概只有1%,红点主要就是吸引那些有强迫症的用户点进去引流。从最开始的红点数量的改进,到后面根据不同属性用户设置不同红点,再到后来和其他产品合作比如京东商场,搞红点的竞价排名……就这么一个小功能腾讯专门养了一个团队去做,对于 BAT 这种大公司来说,一个小的模块和功能的改进能带来很大的利润,很多人常年都在做很小一个模块的重复工作,很难独立完整去做项目,里面闲人很多。

所以工作两年后,X 也想做点商业化的东西了,给部门老大反馈了想法没得到支持,在内部其他部门也争取了问了一圈没能成功转岗,于是就想出来,不想继续在腾讯里面慢慢熬晋升了,从腾讯出来是那年是 2016 年3月,T2-3。而后入职了一家投资公司,以产品经理的身份加入,两年过去了,目前已经成为了一名高级产品经理。他职业规划的最大亮点是深思熟虑后立刻决定和行动,没有犹豫,而机会往往更容易留给有准备和有勇气的人。

谈到技术转产品这类职业规划路线,和大家说说开发转产品经理需要锻炼哪些能力

1.商业思维

开发人员以前是和机器打交道,产品经理给出一个需求就按照那个需求做了,从来不想着为什么这样做,做这个需求想达到什么目的,从来没想过你开发的 App ,你做过的程序老板是怎么用它来赚钱的,这就是你转行产品经理要锻炼自己的第一个能力,培养自己的商业思维,培养自己发掘用户需求的能力。产品经理是站在用户的角度考虑产品,以用户为中心。所以技术人员转产品经理要摆脱技术思维,多想想用户的使用习惯,多想想产品的商业目标。

2.沟通表达能力

程序员给别人的印象一般都是木讷,沉默寡言的,也难怪,程序员都是在和机器打交道,不是销售那种和人打交道的工作,不需要说太多话,不需要撕太多逼。而产品经理的工作要和很多部门打交道,要和运营、技术、设计、市场推广等各个部门打交道,在产品宣讲的时候要清楚的向他们传达你的需求,当产品上线你需要给客服培训,这些都需要你有较强的语言组织和表达能力。

3.文档能力

程序员的工作就是码代码,代码是用英文编写的,只有在给代码注释和写产品说明书的时候才写中文,而且写的也是一些琐碎的内容。如果让一个程序员就某一个主题写一篇文章出来,我想大多数程序员可能无从下手。而产品经理工作中要写很多文档,商业需求文档,市场需求文档,产品需求文档,产品说明书,文档表达能力在工作中很重要。

4.项目管理能力

好的产品经理需要一定的项目管理能力。需要推动产品按照正常的步骤,规定的时间,按质按量的发布上线。这里就涉及到,整体管理、时间管理、团队管理、需求管理。整体管理:包含产品从分析规划到产品开发到产品上线运营到迭代优化的全过程进行管理。时间管理是指主要是计划监控跟踪项目进度,把握关键时间节点,确保产品按照规定的时间上线。团队管理:产品经理需要协调很多部门,有技术,设计,市场推广,运营,产品经理是一个无授权的领导者,你多数需要通过自己的影响力,自己的沟通技巧来协调项目的各个成员,所以需要一个相应的团队管理能力。需求管理:包含各个部门反馈的需求,以及自己收集的需求,需求的变更,需求的跟进等。

所以,你觉得你在以上四个能力上有天赋么,有天赋并且你也有意愿放弃技术成为一个产品经理的话,那就一个原则,就是趁早。

好了,以上就是我们的第二部分,程序员职业发展路径有哪些选择,希望大家可以及时对号入座。

如何结合自身优势做好职业规划?

接下来我们聊聊第三个话题,也是比较关键的核心话题,如何结合自身优势做好职业规划?

这个问题实质上其实是要求我们把两件事做好,一是如何增强自己在众多程序员中的竞争力,一是如果保持方向感

先来谈谈如何增强自己的竞争力

1.拓宽业务场景

我们会在很多场合听到对“精钻”这个词语的推崇,包括在职场上,我们常常听到前辈教导我们对待工作要精益求精,但事实上,在某一方面做到万里挑一的大牛是一条可取的道路,却不是职业发展的唯一道路。

尤其是对于那些未来的职业发展规划是进入明星创业团队担任技术负责人的程序员来说,在之前的积累过程中寻找机会尽量多地接触各类业务场景并寻找解决方案,可能是一条更可行的路径。

这里的业务场景分为大业务场景,也分为小业务场景。大业务场景即不同的细分行业,如电商、内容、视频、共享平台等等。我建议程序员们在进行工作选择的时候不要被自己原先所属的细分领域太过限制,认为自己原来在电商公司以后也必须在电商公司。事实上,多去尝试不同领域的公司,去了解不同领域的公司在技术实现上有什么异同,对于程序员更深入地理解技术是很有帮助的。

尤其是当今行业发展日新月异,某一细分领域很难在一个人 15-20 年的职业生涯中一直处于蓬勃发展的状态,如果之后又出现了新的细分市场,复合背景积累的经验会帮助程序员快速切入到新的细分市场。

而小业务场景则是指同一个技术在同一家公司的不同业务范畴。例如算法方向,可以分为排序、推荐、NLP、图像识别和用户行为研究等,攻坚某一领域是一条发展路径,但横跨不是一个领域也是一条发展路径。这就需要程序员自己把握机会,不断跳出舒适区去承担新的业务和需求。

比如曾经有位陈先生,他之前在 BAT 某公司任职 6 年,担任算法方向的程序员。由于之前 6 年公司业务增长很快,陈先生在不同的研发 Team 都参与过项目,因此在广告、排序、推荐、NLP 和用户行为研究领域都有一定经验,但却没有深入的研究。对此他自己也在跳槽的时候表示过担忧:“业务在哪儿需要就打到哪儿,什么都会一点,什么都不精。”

然而没想到的是,这样的背景非常受中小型互联网公司的欢迎。在经过了几家面试之后,最终陈先生拿到了一家已经 D 轮融资的公司算法负责人的 Offer,薪水也比之前有了大幅度提高。

如果没有这样的机会,也可以做到在某一方面非常精通,然后对其他方面有所了解,将自身培养成“T 字型”人才。

2.把握职场节奏

在职场上有一个时间标准:3 年。 3 年时间,一定要在工作内容和职级上有一个质的变化,这个变化可以通过升职得到,也可以通过跳槽达成目标。

初入职场的 3 年,主要的工作内容就是夯实基础,此时基本处于“完成上级交付的任务”这样的阶段。但在这个过程中,员工不能仅仅完成任务了事,而是要不断思考为什么上级要布置这个任务,这个需求是怎么来的,用于解决什么问题,有没有更好的解决方案等等。

之后的 3 年,也就是职业生涯的 3-5 年,作为程序员,需要达到一个小 Leader 的层级,即带领一个小团队(可以仅仅有几个人)负责某一个模块或是功能的研发,此时在上个阶段积累的经验和关于解决方案的各种想法的作用便凸显出来。而此时作为小团队负责人的角色,程序员更多地需要关注上下游的逻辑,能够形成完整的逻辑链条。

工作经验的 5-8 年,此时程序员已经成为了技术负责人,可以独立负责某一个产品的研发,可以成功地推动产品从 0-1 的阶段,此时更多需要关注的便是跨部门之间的合作与沟通,确保研发行程的按时交付。与此同时,更多地关注一些产品设计方面的内容,会对进一步的晋升很有帮助。

最后一个阶段,即工作 10 年以上,此时达到研发总监或是更高的职位会是一个比较理想的状态,而对于这个层次的要求,是对于整个行业能有比较清晰深入的判断,能够感知未来技术发展的方向并为公司提前布局。

3.训练复合技能

除了编程之外,程序员要尽量培养一些其他方面的技能,例如演讲、写作等等。这样做一方面可以为程序员提供一些兼职机会,如主讲技术相关的直播课程、参考文章或书籍的撰写等。类似的机会在提供报酬的同时也会增加员工的知名度和行业影响力,更有甚者,在社交媒体上发表了相关文章之后,吸引了一批志同道合的同行,开始合伙创业,有了更大的机遇。

就算没有这些额外的收益,复合技能的人才在公司内部也会受到青睐。

比如某知名互联网企业的程序员张先生,由于他在面试时给 HR 看了自己在知乎等技术论坛上的文章,因此入职之后 HR 邀请他参与公司每周五下午的技术分享会并作为主讲人之一。

刚开始张先生还很犹豫,毕竟本身的工作内容已经很繁多,很怕接了这个任务之后力有未逮,反而影响了自己的开发进度。但后来因为同事的鼓励和 HR 的反复邀请,张先生还是答应成为主讲人,并且利用每周末的时间准备讲座材料。

因为在技术分享会上的良好表现,入职后不久,张先生被上级重用并在一年后得到了升职。

4.保持紧密沟通

有些程序员认为自己做的是技术性工作,只要写好代码就可以了。这是错误的认知。根据过来人的经验,那些有意识在工作之余关注行业动态,积攒人脉资源,并且乐于与同行沟通的程序员,往往在职业发展的路上走得更远。

一方面,程序员可以通过这些方式随时评估自己在市场上的价值和优势,当行业和技术的风向发生转变时,及时对自身查漏补缺,避免被时代抛弃。另一方面,人脉资源的积累,有时也能对自己下一次换工作起到雪中送炭的作用。

可见,行业信息、公司动态的互通有无对于职业发展有着至关重要的影响,准确地把握行业动态有助于员工抓住一些转瞬即逝的机会。

而对于信息的获取,自己的朋友、前同事、公司 HR 还有靠谱的猎头等,这些都是可以利用的资源,同时也可以参加一些展览、峰会等线下活动。尤其对于那些自己感兴趣的技术方向,尽量积累一些人脉资源,一次有效的内推往往比海投简历更有效果。

接下来我们再来谈谈如何保持职场方向感,也就是如何在职场这片海洋里航行到最适合我们的一个又一个目的地。

首先我们要知道目前的职场海洋是什么样子的,更重要的是知道它正在发生着哪些变化。

不得不要正视的三个变化。

一是整个行业的人才储备越来越充裕,相关专业的毕业生数量逐年提升,并且质量还越来越高。

就拿 2016 年的数据来说,根据教育部的统计,2016 年有高校毕业生 765 万人,为历年最高;而与编程相关的专业毕业人数达到了总人数的 8% 以上。计算机科学与技术、电子信息等专业也成为了近年来多所高校的热门专业,不仅每年申请人数众多,录取分数线在众多专业中名列前茅,同时转专业和旁听的人数也是逐年增加。 清华大学 2016 年计算机科学与技术系的转专业录取人数与申请人数比例竟然达到了惊人的 1/40 。

二是互联网行业的野蛮生长时期已经接近尾声。

大型互联网公司的基础招聘需求逐渐萎缩,BAT 等巨头企业 2016 年的校招需求数量均不足前两年巅峰时期的一半,与此相对的是对高端招聘的需求越来越旺盛。创业公司更是面临大批死亡和被收购的困境。以前几年火爆的垂直电商领域为例,随着淘宝、天猫等传统电商的成功,垂直领域的电商在 2014 年顺势而起,然而三年之后活下来的企业少之又少。而共享单车从异军突起到开始收割仅仅是 1 年半的时间。越来越短的行业周期很难继续为基础研发的工程师提供稳定大量的岗位需求。而创业公司的大规模倒闭也戳破了行业中的薪酬泡沫。

三是科技的发展并没有带来岗位的增加,相反,有时意味着岗位的减少。

以测试为例,曾经测试都是以手动测试为主,而如今一二线互联网公司已鲜少见到手动测试,大多都是开发自动化测试工具的测试开发,因而对员工素质的要求大幅度提高,而数量需求则大幅度减少。在人工智能飞速发展的如今,可以预见的是未来很多支持类的研发岗位都有可能被效率更高的程序所代替,而专注人工智能的公司将会把相关技术在行业内大规模普及。

从以上三点来看,我们可以很清楚地得出结论:在需求侧趋于平稳,而供给侧逐渐增加的情况下,程序员之间的竞争将会越来越激烈。

知道大海的样子后,你要知道在航行过程中该做哪些事情让自己顺利抵达目的地。

首先,你得有一个清晰的人生规划,才能有一个清晰的职业规划。

最后

跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

本文在开源项目:【腾讯文档 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
算法题汇总。)

[外链图片转存中…(img-fxP8lN46-1616071275512)]

本文在开源项目:【腾讯文档 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…


推荐阅读
  • 在2019中国国际智能产业博览会上,百度董事长兼CEO李彦宏强调,人工智能应务实推进其在各行业的应用。随后,在“ABC SUMMIT 2019百度云智峰会”上,百度展示了通过“云+AI”推动AI工业化和产业智能化的最新成果。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 每日一书丨AI圣经《深度学习》作者斩获2018年图灵奖
    2019年3月27日——ACM宣布,深度学习之父YoshuaBengio,YannLeCun,以及GeoffreyHinton获得了2018年的图灵奖, ... [详细]
  • 对于众多创业公司而言,选择小程序或小视频的发展方向至关重要。本文将深入分析小程序和小视频的特点、优势及局限,帮助创业者做出更明智的选择。 ... [详细]
  • 深入解析国内AEB应用:摄像头和毫米波雷达融合技术的现状与前景
    本文作者程建伟,武汉极目智能技术有限公司CEO,入选武汉市“光谷3551人才计划”。文章详细探讨了国内自动紧急制动(AEB)系统中摄像头与毫米波雷达融合技术的现状及未来前景。通过分析当前技术的应用情况、存在的挑战以及潜在的解决方案,作者指出,随着传感器技术的不断进步和算法优化,AEB系统的性能将大幅提升,为交通安全带来显著改善。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 鄂维南:从数学角度,理解机器学习的「黑魔法」,并应用于更广泛的科学问题...
    作者|Hertz来源|科学智能AISI北京时间2022年7月8日晚上22:30,鄂维南院士在2022年的国际数学家大会上作一小时大会报告(plenarytalk)。今 ... [详细]
  • 基于深度学习的遥感应用
    文章目录深度学习的发展过程深度学习在遥感中的应用基于深度学习的遥感样例库建设基于深度学习的遥感影像目标及场景检索基于深度学习的建筑物提取基于深度学习的密集建筑物自动检测基于深度学习 ... [详细]
author-avatar
糖糖糖开水
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有