Android开发经验谈

泪目-离2021还有最后10天,程序员回家过年?工作,家庭,借钱

2020-12-21  本文已影响0人  程序员面试秘籍

程序员=修电脑?(给我修个电脑)

你要知道,这个世界上有那么一类人,他们永远保持着自私的心态。无论什么时候,他们都在为自己的利益做打算。当你说你在银行工作,他们第一个想法是你能不能给搞到贷款或者办张没有额度限制的信用卡。当你说你在医院工作,他们第一个想法是能不能去看病不排队或者在医院拿点药品送他。

而软件行业,既是和大众息息相关的行业,又是大众不太了解的行业,通常看到的新闻无非是黑客之类的,远程控制别人,或者盗取银行的钱。因为他们的不了解,所以会觉得很对事情应该程序员都可以做,从盗QQ,Photoshop,硬盘文件恢复,到装系统,处理系统故障和软件问题,安装各种盗版软件,各种手机的越狱Root装盗版应用。

并且,另外这些事情往往不涉及实物,给人的感觉是只是在键盘上打打字,又不需要买新硬件之类的,所以往往会被认为是举手之劳,理应帮忙。在他们眼里只有那台笔记本是值钱的,操作系统、软件、解决问题需要的知识储备和研究时间,还有维修所花费的时间,都是不值钱的。

有时候会有一些人,比如邻居之类的,带着笔记本来找我重装系统。通常都是说听说你懂这个,我电脑好慢你帮我重装一下吧。我会建议他们去电脑城找人装,每次都是这样的答复:“我觉得你装的比较好,帮帮忙吧,举手之劳。”然后留下笔记本就走了。这种事情通常都是很无奈的,如果这台笔记本是送给我的,然后我要自己开始使用,那么找出这款笔记本的OEM系统盘和驱动盘,然后更新BIOS,从头开始安装Windows、驱动、官方应用,到下载各种常用的软件装上,这样折腾掉一天我也愿意。

但是给他们装系统如果也这样折腾,需要在网上下载他要的系统,再到官网下载笔记本对应的所有驱动,装完了再按照要求上网找各种破解版的Office、Photoshop、AutoCAD之类的,一天时间可能都不够。如果再遇到个要求你装Windows XP系统的,那可就崩溃了。而如果把笔记本送去电脑城,人家有各种系统的安装盘,还有一个移动硬盘装满了常用的软件的安装程序,你要什么一一说明后,一个下午就可以给装好,然后第二天去取就是了。所以直接跑一趟电脑城,30元钱给他搞定笔记本,然后再给他送过去。反正你来找我无非就是想省这30元钱不是吗,我帮你出了就是了。

马上就要过年了,又有很多程序员要回家乡过年。祝福他们能过一个好年,而不是把全部春节假期花在给别人修电脑上。

二、借钱(有借无还?)

无时不刻接受到亲朋好友的借钱。这不还没回去过年,一亲戚就要借钱盖房,同时得知他买了辆车。车是刚需吗?不买车就有钱盖房,就不用麻烦别人,买车了还找别人借钱盖房!我很无语。
钱是好东西,谁都喜欢。对于借钱这事,借,或者不借,都让人头疼。不借,是因为自己并不宽裕,可又不能得到理解,增加猜忌。借了,自己就会拮据,守信用的又非常少,钱出去容易回来就难,讨钱也会使亲朋好友变世仇。我认为,不是生死困难的事,不要轻易找别人借钱。

三、一起走进坟墓(相亲)

相亲或许也是程序猿最怕的。程序猿闷骚、宅、内向、腼腆的性格,使他们不容易打开社交圈,更不擅长与异性打交道,成为多年钻石单身也并不觉得奇怪。
有一朋友回家过年,还没到家,就被转送到女方家,一脸蒙逼的情况下才知道是相亲。更可怕的是,接连相亲,一个相不中,不断有媒婆来与你牵线搭桥,相亲也是饭桌上或者茶余饭后的各长辈们的谈资,表示不胜其烦。

四、人往高处走(回来后金三银四跳槽)

为什么要跳槽?

大多数情况下,程序员的个人技能成长速度,远远大于公司规模或业务的成长速度。在程序员进入开发行业的前5年表现的更明显。这期间不跳槽,对自己技能的增长,收入的增加都很不利。

设想一下,A在5年时间里换了4家公司,B没有换过。那么A可能至少做了4套系统,而B可能只做过一套系统(正常情况下一家公司触及的业务就是一块,即使开发多个系统也是相同的业务域,技术方面肯定是用现有的东西,成本低易上手。)那么A接触的业务,技术,代码量,工作方式,不同公司的文化等等都完爆B。收入自然完爆B。跳槽频繁,也是1,2年为单位,过于频繁是无意义的。

跳槽的成本也高,认识新同事,熟悉新环境,进入一家垃圾公司的风险,学习新技术等等。从舒适圈里出来很辛苦,体验也不好。


如何跳槽?

从这张图上大概可以看出跳槽热度的一些规律。按照自然时间,我们可以分为三段:

年尾:跳槽淡季。通常是临近阳历年底的时间,大概覆盖9-12月。
年初:绝对的跳槽旺季。核心时间是春节后2个月内,因为太旺,影响力还可能向前后各延伸1-2个月。
年中:跳槽热度折中关于招聘旺季之说,有其他答案提到了9-10月和年中。

其实9-10月只是对应届生的招聘旺季,而年中,确实有不少人因为升职失败选择跳槽,但是数量远不及年初。公认的跳槽旺季还是年初,所谓的「金三银四」。

我们都知道造成这种淡旺分布的主要原因是——年终奖

春节之后,经历了一轮休整 + 职业发展的思考,更多人开始看机会。与此同时,HR 手上也已经积攒了不少的招聘需求,所以人才市场会在春节后的1-2周内迅速迎来高潮,并持续为期近2个月的高热度。

行业聚集地(机遇多)

报告显示,北京为全国程序员分布最多的城市,上海、深圳分别位于二三位。而在全国重点城市程序员净流入分布方面,杭州以12.46%的占比领先于其他城市,西安、成都、深圳分别位居第二三四位。

好的环境氛围很重要(人脉广)

在杭州程序员来源城市TOP10中,上海流入杭州的人才占比最高,达到23.56%。报告显示,吸引程序员来杭州的原因主要是阿里巴巴带动的互联网和技术氛围,其次是人文地理环境俱佳,生活安逸和民营经济活跃,就业、创业机会多。

好的基础+过硬的技术+市场洞察力+ 管理知识

复习知识

工作这么久要重新再去面试肯定是要将自己的知识储备重新拿出来,要把各个知识点复习到位,需要通过各个方式,选择自己最习惯的。无论是读电子书籍还是观看视频都是可以的,但要记得做好自己的学习笔记,能够起到总结的作用,再去复习起来就特别清晰了。

每个知识点都有左侧导航书签页,看的时候十分方便,需要的记得帮忙点赞评论支持一下,评论区,评论【666】即可来获取下面的大厂Android面试解析+技术知识点笔记”锦集了

Android快速面试指南

自行下载直达领取链接:【点击资料下载
点击我的:【GitHub】免费领取Android高级教程和面试题PDF;需要的点击查看自行下载保存!

Android

作为好的安卓开发,首先明确Android是前端,重点是UI,做出稳定的应用是关键。

1.做出稳定的应用是关键。

作为好的安卓开发,首先明确Android是前端,重点是UI,掌握自定义view。

2.建立知识体系

很多人对Android属于一知半解的状态,鼓励去Stackoverflow之类的地方寻找问题的解决办法,但务必了解内在的机理,达成对知识理解的体系,当你建立了一个体系,很多问题就不在复杂,软件开发是precise engineering,不是凭运气。

举个例子,面试的时候,我喜欢挑战面试者一些很离谱的题目,比如,在一个EditText里面,你输了一个字母“A”,这个A是经过了多少安卓特有的流程才能显示到屏幕上的。 初看这是个无聊的问题,大家往往会觉得,这是理所当然的事情,其实不然,这个问题考查了你对view layout/measure的理解,对rendering的理解,对drawing的理解,如果面试者能答出来这个问题,那我一定不担心你会写出卡顿的安卓代码。

刚开始做Android开发的时候,我也答不出这个问题,但几年之后,渐渐养成了一个体系,充分贯通这些“不必要”的细节,我私以为这是个资深程序员必备的条件,什么性能优化都是水到渠成的事情

至于其他的技术,比如video streaming,取决于你是想成为某个领域的专家,还是解决问题的能手,如果是后者,你需要良好的数据结构+算法+读代码+读文档的能力,在短时间内了解优秀的解决办法,然后加以利用,做软件工程不是读PhD,先把需求解决了,再看怎么提高。

3.数据结构算法,源码,原理机制

很多人推荐了各种书,对于Android开发,很好的资源莫过于Google的官方视频,他们指引了正确的方向让你深入了解Android的UI构建和运行机制。见过许多写了很多app,但是不明白其中要点的程序员,我只觉得失望并担忧。当然,既然要做前端UI,黑魔法少不了,学习日新月异的编程思想,Dagger/React等等

如果身在团队中,建立良好的学习氛围,鼓励交流,同时在被产品经理和设计师折磨的时候,理解他们,帮助他们理解Android开发特点

新技术更新很快,很多人担心跟不上被淘汰,其实大可不必,Android只是个解决问题的工具,你需要一个时刻准备用这个工具解决问题的知识体系,换了一个工具也是一样的。比如跨平台开发技术都是殊途同归,手机没被淘汰,Android开发就不会被淘汰。

另外关于NDK开发,音视频,微信小程序,Flutter跨平台技术等等。其实严格来说已经可以算独立出Android的技术面了。但是却又息息相关。因为企业招一个Android开发,肯定希望他能同时掌握其它的技能,减少用人成本。所以这些技术也需要去学习掌握。

Java

一个优秀的Android开发者,一定有扎实的Java基础知识。今天给大家分享一下我们必须掌握的Java知识点。

设计模式

深入Java泛型

注解深入浅出

3.1 自定义注解

3.2 注解的使用

3.3 Retrofit中的注解

并发编程

并发就不必多说了,面试必问,Glide/Okhttp等框架自己看一眼就知道里面是如何大量使用的。

4.1 线程共享和协作

4.2 站在巨人肩上操作CAS

4.3 仅会用线程池是不够的

4.4 Android AsyncTask原理解析

数据传输与序列化

反射与类加载

6.1 反射基本概念与Class

6.2 ClassLoader类加载器

JVM核心原理

7.1 垃圾回收器机制

7.2 内存分配策略

7.3 Dalvik虚拟机

Java语言具有跨平台特性,就是由JVM实现的。JVM将运行时数据区分为线程私有和共享数据区两大类。其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法区,所有线程共享的数据区包含 Java 堆、方法区,在方法区内有一个常量池。

Java本身有一个很好的管理内存的机制—— GC。然而,GC却经常会遇到无法回收的内存,即内存泄漏,内存抖动,结果可能是OOM。

JVM与内存优化息息相关,优秀的Android开发者,需要熟练掌握JVM核心原理,才能将开发的app性能做到极致。

保持学习

程序员这个职业,相比其他职业,可能还是要年轻许多。特别是在国内,最老的一批程序员好多都转管理了,再过10年20年,我们会怎么样呢,没人知道。前段时间华为35岁程序员被离职的事情,给我们敲响了警钟,悲哀之余,只有尽力学习了,拼不过体力就拼能力与经验吧。

学习这个事情说起来就复杂了,我觉得两点很重要:基础、学以致用。


尾声

所以,总结来说

最后依然强调下——长远的发展比一时收益更重要。

祝每个追寻更好职业发展的人都能得偿所愿。

上一篇下一篇

猜你喜欢

热点阅读