关于java:JavaWe-are-living-in-a-Continuous-World

74次阅读

共计 10565 个字符,预计需要花费 27 分钟才能阅读完成。

【Java】We are living in a Continuous World. Continuous Integration, Continuous Deployment, Continuous Learning, and so on.

咱们正生存在一个继续的世界中。继续集成、继续部署、继续学习,等等。

Machines are learning faster and they are more consistent than us. They almost never fail. But we humans cannot be as consistent as machines. We tend to be lethargic and we have hiccups at times. But that’s perfectly fine and that’s the human nature

人和机器竞争上,人往往会处于劣势。人会走神,有时候还会昏昏欲睡。

Sometimes we like to start learning new technologies but we may fail due to one of the following reasons

1. we don’t know where to start

  1. 不晓得从哪儿开始

2. we think about too many things and make it complicated

  1. 想太多,做太少

3. we lack the patience in the middle of something

  1. 大功告成,不足急躁

4. we cannot balance our official work and learning

  1. 无奈在工作和学习中找到本人的平时

This time I have spent a couple of weeks gathering the requirements for myself and then I have set clear deadlines for it.

我花了几周工夫为本人收集要求,而后为它设定了明确的最初期限。

I have made a clear roadmap using the collected requirements and I am happy that I have successfully completed it hence I am writing an article on that to help my fellow peers.

我利用收集到的需要制订了一个清晰的路线图,我很快乐我曾经胜利地实现了它,因而我写了一篇文章来帮忙我的同龄人。

Many firms are now undergoing digital transformation using leading technologies and hence it is the perfect time to update yourself.

许多公司当初正在利用当先的技术进行数字化转型,因而当初是更新本人的最佳时机。

Technology Stack

  1. AWS / Cloud certs
  2. Java8
  3. Spring boot-microservices

SpringBoot 微服务

  1. Other full-stack technologies

其余全栈技术

  1. Data structs and Algorithms

数据结构和算法

  1. Practice in Hacker Rank and Leetcode

LeetCode 下面做些有难度的练习

  1. Design Patterns and Design Principles

设计模式和设计准则

  1. System Design

零碎设计

  1. reactjs-redux,/Angular
  2. Portfolios
  3. Methodologies
  4. Other Programming Languages

Now let’s go into detail one by one

1. AWS / Cloud certs

AWS 认证。

Why cloud-first?

I have done 2 AWS certifications in 6 months namely
我在 6 个月内实现了 2 个 AWS 认证

a. AWS Certified Developer Associate
a. AWS 认证开发者助理

b. AWS Certified Solutions Architect Associate
b. AWS 认证解决方案架构师助理

They cover a wide range of technological components like a Load balancer, API gateway, Serverless Computing, Docker Containers and Orchestration, ElasticSearch Indexing, Asynchronous Queues and Message Streaming, Storage Models, NoSQL DB, Relational DB, Caching, and so on…

它们涵盖了宽泛的技术组件,如 负载平衡器、API 网关、无服务器计算、Docker 容器和协调、ElasticSearch 索引、异步队列和音讯流、存储模型、NoSQL 数据库、关系型数据库、缓存 等等。

Hence when you do this first, you get a grip on the full-stack technologies and everything that follows is easier

因而,当你先做这个,你就能把握全栈技术,接下来的所有都会更容易。

2. Java 8

It is good to have a deep understanding of Java8 concepts like Functional Programming (Lambdas), Functional Interfaces, Streams API, and so on.

对 Java8 的概念有粗浅的了解是十分重要的,比方性能 编程(Lambdas)性能接口 流 API等等。

But the most important thing is to make sure our understanding of Java is 100% perfect and we must be strong in Java Collections, Concurrency, and the OOPS Concepts

但最重要的是要确保咱们对 Java 的了解是 100% 完满的,咱们必须在 Java 汇合、并发和 OOPS 概念方面有很强的实力。

Whatever the technology stack and frameworks we use, Java is the backbone of the system

无论咱们应用何种技术栈和框架,Java 都是零碎的外围。

3. Spring boot-microservices

Microservices architecture has gained immense popularity in the industry due to many of the following benefits

微服务架构在业界取得了微小的人气,通常蕴含上面的益处

  1. Highly scalable
  2. 高度可扩展性
  3. Quicker Development and Deployment
  4. 更快的开发和部署
  5. Cloud Native
  6. 云原生
  7. Polyglot programming languages
  8. 多语种编程语言
  9. Every service can have different types of databases

每个服务都能够有不同类型的数据库

and so on.

Spring Boot is the framework to build microservices in Java. It is built on top of the Spring Framework and works seamlessly with Hibernate ORM framework.

Spring Boot 是在 Java 中构建微服务的框架。它建设在 Spring 框架之上,与 Hibernate ORM 框架无缝合作。

So it is very important to learn the Spring Boot framework and understand the Microservices architecture.

因而,学习 Spring Boot 框架并了解微服务架构是十分重要的。

4. Docker Containers and Orchestration

Docker 容器和编排

Now most organizations are using Docker Containers to deploy the Microservices into the Cloud

当初很多我的项目应用 Docker 容器部署微服务的我的项目,并且通常部署在云服务器。

Docker Containers provide Virtualization. They are easy to scale and are deployed to the cloud. They are cloud-native.

Docker 容器提供了虚拟化技术,它们易于扩大并被部署到云中。它们是云原生的。

So what is Container Orchestration?

那么,什么是容器编排?

When we develop microservices, we will be having a lot of services running in Docker Containers. Well, once we have so many Docker containers running in our system we need to monitor them. This is where the orchestration comes into the picture. The most popular one is Kubernetes.

当咱们开发微服务时,咱们将有很多服务在 Docker 容器中运行。

那么,一旦咱们的零碎中运行了这么多的 Docker 容器,咱们就须要监控它们。这就是容器编排的作用。最风行的是 Kubernetes。

So, you need to learn both Docker and Kubernetes.

所以,你须要同时学习 Docker 和 Kubernetes。

5. Data structs and Algorithms

Once you are done with all the above things, you will have great confidence going forward. So this is the right time to start up with data structures and algorithms.

一旦你实现了上述所有事件,你将有很大的信念继续前进。因而,当初是开始学习数据结构和算法的正确机会。

Before we go in, let’s answer the below question

进入下一步之前,咱们先答复上面的问题

We are not using Data Structures and Algorithms in my everyday programming. So why are interviewers asking me these and why should I learn?

在我的日常编程中,咱们没有应用数据结构和算法。那么,为什么面试官要问我这些,为什么我应该学习

Well. Only when you understand how they work, you can use them efficiently in your programs. You should know when to use an ArrayList and when to use a LinkedList. You should know the time and space complexities of the commonly used data structures. Understanding these things will make you a very good programmer and also helps to crack the big interviews.

好吧。只有当你理解它们是如何工作的,你能力在你的程序中无效地应用它们。你应该晓得何时应用 ArrayList,何时应用 LinkedList。你应该晓得罕用的数据结构的工夫和空间的复杂性。理解这些货色将使你成为一个十分好的程序员,也有助于冲破高难度面试。

We can Divide this topic further into a few sections
咱们能够把这个话题进一步分为几个局部

  1. Linear Data Structures (Arrays, List, HashMap, Stack, and Queue)
  2. 线性数据结构(Arrays, List, HashMap, Stack, and Queue)。
  3. Non-linear Data Structures (Binary Trees, AVL Trees, Heap, Graphs, Tries, etc)
  4. 非线性数据结构(二进制树、AVL 树、堆、图、试等)。
  • From my experience, only Binary Trees and Binary Search Trees are enough to prepare. Other data structures are a little complicated and are only asked in top-notch companies like Amazon, Apple, Google, Facebook, and Microsoft
    依据我的教训,只有 二进制树 和二进 制搜寻树 是仔细筹备的。其余的数据结构比较复杂,只有像亚马逊、苹果、谷歌、Facebook 和微软这样的一流公司才会问。
  1. Sorting Algorithms (Quick Sort, Merge Sort, Bubble Sort, Bucket Sort, Counting Sort, etc)
    排序算法(疾速排序、归并排序、冒泡排序、桶排序、计数排序等等)
  2. Search Algorithms (Linear Search, Binary Search, Ternary Search, Exponential Search, etc)
    搜索算法(线性搜寻、二元搜寻、三元搜寻、指数搜寻等)。
  3. String Manipulations (String Manipulations and String Operations)
    字符串操作(字符串操作和字符串操作)。

It is very important to have a strong understanding and hands-on with this topic. So, take your own time and do this. This is the important component of any Product Company Interview.

对这一主题有强烈的了解和亲自体验是十分重要的。因而,请你本人花工夫做这件事。这是任何公司面试的重要组成部分。

Arrays and Strings are the most asked and discussed data structures in Online Tests and Interviews.

数组和字符串是在线测试和面试中被问及和探讨最多的数据结构。

6. Hackerrank, LeetCode

This is the most important component of any interview. Once you are well versed with Data Structures and Algorithms, a lot of practice is required in these 2 platforms

这是任何面试中最重要的组成部分。一旦你熟练掌握了数据结构和算法,就须要在这两个平台上进行大量的练习。

Hackerank is good for beginners. On this platform, you can earn badges and also take up free certificates once you complete the timed tests. Most of the companies use hacker rank platform for testing the candidates on round 1

Hackerank 适宜初学者。在这个平台上,一旦你实现计时测试,你能够取得徽章,也能够取得收费证书。大多数公司应用黑客等级平台对候选人进行第一轮测试。

Leetcode is a little more advanced than Hackerrank. Leetcode provides Time and Memory consumed for our programming solution and also compares us with our peers with percentile scores.

Leetcode 比 Hackerrank 更先进一点。Leetcode 为咱们的编程计划提供了工夫和内存耗费,还用百分制分数将咱们与同行进行了比拟。

This is a very important aspect for us to get better. We can also compare our solution with others and optimize it

这些反馈对于咱们的晋升来说十分重要,能够让咱们变得更好,咱们能够比照本人的解决方案和其他人的计划,从中一直补救自缺点。

We always have to keep practicing these. Leetcode itself has around 2000 problems. Top companies like Facebook, Google, Microsoft, etc do ask LeetCode problems in their interviews.

咱们总是要一直地练习这些。Leetcode 自身有大概 2000 个问题。像 Facebook、谷歌、微软等顶级公司在面试时都会问 LeetCode 问题。

7. Design patterns and Design principles

The next step must be get well-versed in all the design patterns and also the Design principles. Interviewers will definitely test your design skills based on different scenarios. Understand all the 23 design patterns and prepare an example scenario using UML diagrams.

下一步必须精通所有的设计模式和设计准则。面试官必定会依据不同的场景来测试你的设计技能。理解所有 23 种设计模式,并筹备一个应用 UML 图的例子场景。

One another important concept is the SOLID principle and Domain Driven Design (DDD)

另一个重要的概念是 SOLID 准则和畛域驱动设计(DDD)。

8. System Design

This is not asked in most of the interviews but I strongly recommend it to understand the system better. This will be really helpful if you want to move into an architect role from being a developer.

这在大多数的面试中都没有被问到,但我强烈建议你去理解一下这个零碎。如果你想从一个开发者转到一个架构师的角色,这将是十分有帮忙的。

A Developer is expected to understand the System and its components. You are expected to design an overall system given a requirement. For eg: design a chat application, design a meeting room booking system, design a parking lot, etc

开发人员应该理解零碎和它的组成部分。你被冀望设计一个给定需要的整体零碎。例如:设计一个聊天应用程序,设计一个会议室预订零碎,设计一个停车场,等等。

There are a lot of videos on youtube that talk about System Design

YouTube 上有很多对于零碎设计的视频

9. reactjs-redux/ angular

Finally, if you want to be a full-stack developer then definitely you must learn either React or Angular. With this, you have come full circle.

最初,如果你想成为一个全栈开发者,那么你必定要学习 React 或 Angular。这样一来,你就走完了一圈。

Full Stack Developer role is the hottest in the market and is preferred more than backend engineers. The frontend is again a whole big area and hence being an expert in both frontend and backend is super difficult.

全栈开发人员的角色是市场上最热门的,比后端工程师更受欢迎。前端又是一个残缺的大畛域,因而成为前端和后端的专家是超级艰难的。

Who does not want a developer who can work on both the front end and back end?

谁不想要一个能在前端和后端工作的开发人员呢?

But if you want to be a full-stack developer, you can only concentrate on reactjs/ Angular, Java8, Microservices, and Cloud. Most of the backend technologies are not expected from you as it is practically impossible.

但如果你想成为一个全栈开发者,你只能专一于 reactjs/ Angular、Java8、微服务和云。大多数后端技术是不指望你的,因为这实际上是不可能的。

10. Portfolios

Another aspect for any developer is to maintain online portfolios to showcase his/her work. There are many platforms as follows

这一段的意思是尝试去各种开放平台下面尝试代码保护提出改良倡议,展现本人。

1. Github

Always do hands-on when learning new things. Once done, immediately create a repository and push the code. Write a detailed read-me file for better understanding. The following is my git hub repo

在学习新事物时,肯定要入手操作。一旦实现,立刻创立一个仓库并推送代码。写一个具体的 read-me 文件,以便更好地了解。

https://github.com/dineschandgr?tab=repositories

2. Hackerrank, Leetcode

This profile shows the problems solved by us and also displays badges and certificates if any. Just keep solving problems actively

该简介显示了咱们所解决的问题,如果有的话,还显示了徽章和证书。

3. Linkedin

The most important portfolio among all, is where employers search and filter candidates. Update all the skills here and add the certifications.

这是最重要的投资组合,是雇主搜寻和筛选候选人的中央。在这里更新所有的技能并增加证书。

“Linkedin is the new resume”

Include links to all your portfolios on LinkedIn

在 LinkedIn 上包含你所有作品集的链接

11. Methodologies

Learn about the following things also and understand their concepts.

学习上面的事物并且了解概念。

  1. Maven build

Maven 构建

  1. Git
  2. TDD (Test Driven Development)

TDD (测试驱动开发)

  1. BDD (Behavioral Driven Development)

BDD (行为驱动开发)

  1. DDD (Domain Driven Design)

DDD (畛域驱动设计)

  1. Agile

麻利开发

12. Other Programming Languages

Nowadays companies expect candidates to know a couple of other languages other than Java. But this is optional if you have a good experience in all the above sections

当初的公司心愿应聘者懂得除 Java 以外的其余几门语言。然而,如果你在上述所有局部都有良好的教训,这也是可选的。

If you wish to be a polyglot programmer, then 3 important technologies to learn are

如果你想成为一个多语言程序员,那么须要学习的 3 项重要技术是

  1. Python
  2. Node
  3. Golang

Please do not get panic after reading too much information from the article. This is an overall roadmap. Start small. Just one step at a time at your own pace. It may take time but that is fine because you are getting better every day. You are your own competitor.

请不要在浏览了文章中过多的信息后感到恐慌。这只是一个总体路线图。从小事做起。依照你本人的节奏,一次只走一步。这可能须要工夫,但没关系,因为你每天都在变得更好。你是你本人的竞争者

正文完
 0