企业在选择人才时,相同能力时,往往看重的时一个人的学历、人品、年龄。个人在选择企业时应规划好自己的职业生涯,金钱是一个重要的指标,发展空间是另一个重要指标。永远记住物竞天择,适者生存;物以类聚,人以群分。如果想要加入优秀的团队,那么首先自己就应该变得优秀,别人才有可能带你玩。个人观点:能进大厂别进小厂,能进国企别进私企,能进上市别进创业。社会上流传着35岁就失业的说法,不妨换一种思路:如果23岁本科大学计算机毕业,到35岁工作,十二年了,平均每年20W 共计200多万,足以在一个新一线城市打牢物质基础,这时有一部分人因为热爱或者转型管理继续在互联网行业,一部分有野心的人有了物质基础可能会选择创业,然而另外大部分人因为拼不过年轻人自己又倚老卖老不愿自降身价最终被淘汰(各行各业都是如此)。如果热爱,请继续前行,继续深耕。
目前市面流行的开发语言有:C、C++、Go、PHP、Python、JAVA。随便掌握一门语言在年轻的时候便可混得口饭吃,但是要想有更高的追求比如成为高级研发、资深研发甚至是架构师这一级别,光靠嘴是不行的,需要实打实的努力。正所谓付出和收入是成正比的。认知需要一个过程,好的方法,好的老师会加速你的认知。本人从事Java开发多年认知初步形成,下面给一些迷茫的人一丝曙光。
一、精通一门语言
任何一门语言的框架都是基于底层去实现的,面对频繁迭代的框架如何应对,我的答案是以不变应万变,深耕底层触类旁通。以Java为例:
JDK JRE JVM JAVA之间的关系?
类的生命周期是什么?如何确定一个类没有用?如何定位类变成垃圾?垃圾如何回收、方法有哪些?
Java文件是如何运行的?
Java内存模型的特性,内存共享区域数据是如何交互的?
Java锁的种类有哪些?线程的生命周期是什么?线程池又是什么使用场景?
Java的三大特性是什么?封装继承多态. 泛型,重写,重载又是什么?
Java的数据类型有哪些?什么时自动拆箱,自动装箱?
Java的String?
数据结构有哪些,手写他们?数组,哈希,链表,树,图
排序算法:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序
查找算法:顺序查找、二分查找、插值查找、斐波那契查找、数表查找、分块查找、哈希查找
23种设计模式:创建型模式、行动行模式、结构性模式三大模式。
创建型模式: 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式
结构型模式: 适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式
行为模式: 模板模式、访问者模式、策略模式、状态模式、观察者模式、备忘录模式、中介者模式、迭代器模式、解释器模式、命令模式,责任链模式
二、精通一门数据库
Hive是什么?优点是什么?有什么不足?
Hive的计算引擎有哪些?mr,tez,spark
SQL是如何被解析成作业的?语法分析=》逻辑计划=》优化逻辑计划=》物理计划=》执行计划
什么是范式?第一范式?第二范式?第三范式?
数仓的模型有哪些?星型模型、雪花模型、维度建模。
表的类型?数据结构有哪些?
Hive中文件格式?压缩格式?行列存储的优劣点各是什么?
Join,分组,排序的使用(小文件,数据倾斜常见问题)?
行列转换?高级函数rank(),over(), lateral view explode()和UDF、UDTF、UDAF的使用?
分析方法:时间分析、漏斗分析、维度分析、矩阵分析?
三、精通一个资源调度框架思想
资源CPU、内核等调度框架(Hadoop YARN)深入理解Yarn的资源调度原理?
作业如何运行在YARN上的?
四、熟悉网络理论
七层|五层网络协议?
为什么要三次握手四次挥手?
Http和Socket的区别?使用场景?
五、熟悉分布式思想
分布式思想:
一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)
三选其二,不同的架构根据场景不同选择也就不同。
既然是分布式,也就意味者多台同时工作。那就会出现很多问题要解决:
如何通信?如何推选老大?老大挂了怎么处理?分布式锁有纳哪些?
六、熟悉一种缓存或者消息队列
最近最少使用算法?Rdis的使用场景?
Kafka消息中间件?什么情况数据重复,什么时候丢失?如何确保Exactly-Once?
七、熟练使用脚本
磁盘相关,网络相关,文件相关的命令,资源相关
文件相关,群组用户名管理,文件权限。
常用命令:查询grep,行处理sed,列处理awk
熟练使用python进行数据统计