>Java >java지도 시간 >알리바바 채용 면접에서 어떤 질문을 받나요? Java 프로그래머의 자율 학습을 위한 몇 가지 참고 사항

알리바바 채용 면접에서 어떤 질문을 받나요? Java 프로그래머의 자율 학습을 위한 몇 가지 참고 사항

php是最好的语言
php是最好的语言원래의
2018-08-01 17:22:573436검색

학교를 졸업하고 2년 동안 일한 후에는 제가 무엇을 하는지도 모르고, 어떤 기술도 배우지 않았습니다. 그러다가 친구들에게서 프로그래머라는 직위에 대해 알게 되었는데, 그 사람들이 저에게 어떻게 해야 하는지 알려줬어요. 급여가 너무 높아서 인터넷 서핑을 시작했습니다. 그 사실을 알게 된 후 나는 대가족의 프로그래머가 되고 싶었고 반년 동안 열심히 공부한 끝에 정말 좋은 결과를 얻었습니다. 자바 프로그래머라는 직업을 가지고 그 이후로 차근차근 경험을 쌓아서 이제 일을 할 수 있게 됐네요. 여기에서 제 경험을 여러분과 공유하고 싶습니다. ㅎㅎ~ 헛소리는 하지 않고 핵심만 말씀드리겠습니다. . 아파치 php mysql

시작하세요!

알리바바 채용 면접에서 어떤 질문을 받나요? ​ ​​

​ 먼저 알리바바의 소셜 채용 인터뷰가 무엇인지부터 이야기해보자. 사실 이 주제는 알리바바에서 면접을 본 학생들이라면 누구나 한두 가지 질문에 답할 수 있다는 사실이다.

첫 번째 단계는 메인 언어이고, 두 번째 단계는 프로젝트입니다.

이미 많은 분들이 면접 과정에서 경험하셨을 거라 생각합니다. 대부분의 면접은 2단계로 나뉘는데, 각 단계의 면접 난이도는 회사와 직위에 따라 다릅니다. 묻는 질문은 당연히 다를 것입니다.

면접 난이도에 관해서는 험담을 해야 한다고 인터넷 어딘가에서 본 댓글에 따르면, 면접의 기술적인 난이도를 보면 BAT 순서는 알리> 텐센트.

  이에 대해 저자의 실제 심정은 위와 일치합니다. 왜냐하면 제가 바이두와 알리바바와의 인터뷰에 참여했기 때문입니다. 개인적인 느낌으로는 알리바바가 바이두보다 어렵습니다.

하지만 저자는 알리바바가 바이두보다 더 어렵다고 말했다. 사실 저자의 구체적인 인터뷰에 국한된 이야기다. 사실 두 회사 간의 인터뷰의 구체적인 난이도는 그렇게 단순하게 비교할 수 없다.

 면접의 난이도는 직위(예: 주니어 엔지니어 또는 선배), 부서(예: 비즈니스 부서 또는 순수 R&D 부서), 채용 요구 사항(예: 긴급 필요 또는 예비 인재), 면접관의 선호도에 따라 다릅니다. (가식적인 사람인지 온화한 사람인지 등) 등의 요소에 따라 같은 회사라도 난이도가 다르기 때문에 단순히 두 회사의 면접 난이도를 비교할 수는 없습니다.

 어려운지 아닌지는 해보기 전에는 알 수 없습니다!

그래서 Alibaba 미들웨어 팀이 여러분을 환영합니다! (에헴, 이 문장을 왜 넣었는지 묻지 마세요, 모르겠어요, 0-0)

알리바바 채용 면접은 어떻게 준비하나요? ​

​ LZ는 이 문제를 4부로 나눠서 논의할 예정입니다. LZ 본인도 Java 출신이기 때문에 주요 언어에 관한 질문은 모두 Java와 관련되어 있으며, 다른 언어를 배우는 학생들은 선택적으로 무시할 수 있습니다. 또한, 면접을 진행하는 동안 면접관의 질문은 대체로 서로 맞물리며 점차 심화되는 모습을 보이는데, 이는 아래에서 더욱 확연하게 느껴집니다.

 1. 주요 언어 자체와 고급 기능.

 주요 언어는 물론 평일에 돈을 벌기 위해 사용하는 언어입니다. LZ에게 당신이 주요 언어가 없거나, N개의 여러 언어를 알고 있거나, N개의 여러 언어에 능숙하다고 말하지 마십시오. 그렇게 말하고 싶다면 항저우에 와서 시도해 볼 수 있습니다. LZ는 당신을 때려죽이지는 않을 것이지만 기껏해야 당신을 불구로 만들 것이라고 약속합니다.

 LZ의 주요 언어는 당연히 Java입니다. 그렇다면 Java의 경우 인터뷰에서 질문하기 쉬운 언어 자체와 고급 기능은 무엇입니까?

일반적인 상황에서는 다음과 같은 주요 지식 사항을 쉽게 질문받을 수 있습니다. (PS: 다음은 학교 모집이 아닌 사회적 모집에 대해 이야기하고 있기 때문에 Java의 비교적 고급 지식 포인트입니다.)

 1) Java의 데이터 구조와 관련된 클래스 구현 원칙, 예를 들어 LinkedList, ArrayList, HashMap, TreeMap 등등. 다음은 단순히 데이터 구조의 직렬 캐논을 시뮬레이션합니다.

예를 들어 면접관이 먼저 HashMap이 제대로 되어 있는지 물어봅니다.

 순서가 아니라고 대답해야 합니다. 그러면 면접관은 계속해서 순차적인 Map 구현 수업이 있느냐고 묻습니다.

지금으로서는 모른다고 하시면 이 질문은 여기서 끝나겠습니다. TreeMap과 LinkedHashMap이 있다고 하면.

그러면 면접관은 다음으로 TreeMap과 LinkedHashMap이 어떻게 순서를 보장하는지 물을 수 있습니다.

 답변이 어렵다면 여기서 멈춰주세요. 그래도 대답하면 면접관은 계속해서 질문할 것입니다. 둘 중 어느 것이 더 질서 있게 구현된다고 생각하시나요?

 그래도 대답할 수 있다면 면접관은 계속해서 질문할 것입니다. 이를 구현하는 더 좋고 효율적인 방법이 있다고 생각하십니까?

 아직도 그렇게 말할 수 있다면, 말씀하신 구현 방법에 대해 여전히 많은 질문을 드릴 수 있습니다.

 위는 면접관이 묻는 단계별 질문의 예입니다. 그러므로 모르는 것이 많으면 무식하게 굴지 마세요. 다음 질문에 노출될 수 있으니 그냥 아니라고 말하고 문제를 끝내고 빨리 익숙한 분야로 전환하는 것이 좋습니다.

 2) Java 동시 패키지의 클래스, 해당 기능 및 구현 원칙은 java.concurrent 패키지에 있습니다. 위와 마찬가지로 동시 패키지의 직렬 대포도 간단하게 시뮬레이션합니다.

예를 들어 면접관이 먼저 질문할 수 있습니다. 모든 스레드가 이벤트가 함께 발생할 때까지 기다리다가 이벤트가 발생하면 모든 스레드가 함께 실행되기 시작하는데 좋은 방법이 없을까요?

이때 배리어(Java 동시성 패키지의 CyclicBarrier)를 사용할 수 있다고 말하면 면접관은 계속해서 묻습니다. 그 구현 원리를 알고 있습니까?

계속해서 대답하면 면접관이 계속 물어볼 수도 있는데, 다른 구현 방법을 아시나요?

 이를 달성하는 방법을 여러 가지 말할 수 있다면 계속해서 질문해 보세요. 이 방법 중 어느 것이 더 좋다고 생각하시나요?

어떤 방법이 더 낫다고 하면 면접관이 계속해서 물어볼 수 있어요. 쓰라고 하면 더 좋은 방법이 있다고 생각하시나요?

이때 자신만의 더 나은 구현 방법을 말할 수 있다면 면접관은 반드시 이에 대해 계속해서 질문할 것입니다.

  면접 때 면접관을 지도해야 한다고 하는 이유입니다. 면접관의 질문은 추적 가능한 경우가 많기 때문에 그가 다음에 무엇을 질문할지 추측할 수 있으면 대답할 때 말하고 싶은 방향으로 갈 수 있습니다. 이렇게 하면 면접 중에 당신이 더욱 차분하고 편안해 보일 것입니다.

 3) IO 패키지 및 NIO 패키지의 콘텐츠입니다. 이 부분의 초점은 NIO가 될 것입니다. 대부분의 IO 패키지는 여러분에게 친숙할 것이므로 건너뛰고 NIO의 내용에 대해 직접 물어볼 수도 있습니다.

  IO 패키지와 NIO 패키지의 내용은 상대적으로 작습니다. 우선 NIO 모델이 익숙해야 하며, 특히 선택자는 자신의 책임과 구현 원칙에 대해 매우 명확해야 합니다. 실제로 NIO의 핵심은 IO 스레드 풀이라는 점을 기억해야 합니다. 때로는 면접관이 IO 패키지의 디자인 패턴(데코레이터 패턴)에 대해 질문할 수도 있습니다.

어떤 면접관들은 더 나은 디자인이 있는지 묻기도 합니다. 이때, 모른다면 현재 레벨이 한계가 있고 더 좋은 디자인이 생각나지 않는다고 단호하게 말해주세요. 말도 안 되는 말을 하고 아무렇지도 않은 말을 하세요.

 4) 자바 가상 머신의 내용. 이 부분은 주로 GC, 클래스 로딩 메커니즘, 메모리의 세 부분으로 구성됩니다.

 GC 부품이 포함된 간단한 직렬포입니다.

 면접관은 객체가 언제 GC가 될 것인지 먼저 물어볼 수 있습니다.

그렇다면 왜 이 시점에서 객체가 GCed가 되는지 계속 물어보세요.

그렇다면 계속해서 GC 전략의 분류는 무엇인지 질문해 보세요.

 말씀하시면 각 전략의 장점과 단점이 무엇인지 계속 물어보겠습니다. 어떤 시나리오에 적용할 수 있나요?

계속 말씀하신 후 실용적인 시나리오를 제시하고 GC 전략을 선택하게 해주시겠어요?

 선택하셨다면 계속 질문드리겠습니다. 왜 이 전략을 선택하셨나요?

 

다음은 클래스 로딩 메커니즘에 대한 간단한 일련의 샷입니다.

 먼저 Java의 클래스 로더가 무엇인지 묻고 싶습니다.

 이 질문에 답한 후 각 클래스 로더가 어떤 클래스를 로드하는지 질문하실 수 있습니다.

말을 마친 후, 이러한 클래스 로딩 사이의 부모-자식 관계는 무엇인지 질문을 받을 수 있습니다.

답변하실 때 부모 위임 모델을 언급하셨을 수도 있으니, 계속해서 부모 위임 모델이 무엇인지 여쭤봐도 될까요?

설명을 마친 후에도 Java의 클래스 로더가 부모 위임 모델을 사용하는 이유가 무엇인지 계속 질문하실 수 있습니다.

답변 후에도 자신만의 클래스 로더를 어떻게 맞춤설정하는지, 자신의 클래스 로더와 Java와 함께 제공되는 클래스 로더 간의 관계를 어떻게 처리하는지 계속 질문하실 수 있습니다.

 

기억에 관한 시리즈가 하나 더 있습니다.

 먼저 메모리는 어떤 부분으로 나누어져 있고, 이 부분에는 어떤 데이터가 저장되어 있는지 물어봐야 겠죠?

  그렇다면 생성에서 소멸까지 이러한 부분에서 객체가 어떻게 생존하고 이동하는지 계속 질문하시나요?

그러면 메모리의 어떤 부분이 GC 재활용에 참여하게 될까요?

이 작업을 마친 후 Java의 메모리 모델이 어떻게 설계되었는지 물어봐도 될까요?

 답변을 하면 왜 이렇게 디자인했느냐고 계속 묻습니다.

 질문하신 후, 메모리 모델 디자인과 관련하여 휘발성 키워드의 역할에 대해 이야기해 달라는 요청도 받으실 수 있나요?

대화할 때 가시성을 반드시 언급할 것입니다. 그러면 가시성이라는 세 단어 이후에는 계속해서 동시 콘텐츠에 대해 질문할 수 있습니다.

 

기본적으로 Java 언어 자체와 언어의 조금 더 고급 내용은 위의 부분입니다. 위의 네 부분을 매우 철저하게 이해할 수 있다면 기본적으로 Java의 이 부분에는 문제가 없습니다. 내용만으로도 충분합니다. 면접관과 오랫동안 대화를 나누셨습니다. 이런 것들을 오랫동안 이야기하다 보면 자연스럽게 다른 질문을 하는 시간도 짧아질 것입니다.

LZ에서 이러한 질문을 작성하는 과정에서도 느낄 수 있을 것입니다. 면접관은 같은 맥락으로 질문을 할 것입니다. 면접관이 다른 질문을 하도록 하십시오. 더 이상 튀어 나올 수 없을 때까지 계속 깊이 들어가지 마십시오. 그렇지 않으면 당황스러울 것입니다.

  2. 프로젝트 소개 및 산재질문

  이 부분은 면접 과정에서 꼭 물어보는 부분이자, 가장 긴 대화가 이루어지는 단계이기도 합니다. 이전 언어 부분이 매우 탄탄해서 면접관이 한두 시간 동안 질문했지만 여전히 언어 자체를 얼마나 깊이 이해했는지 알 수 없는 경우를 제외하고는 말입니다. 그렇지 않으면 자신의 프로젝트의 장애물에서 벗어날 수 없으며 일반적으로 채팅이 너무 짧지 않을 것입니다.

  이 부분의 일반적인 패턴은 자신이 직접 수행한 프로젝트에 대해 이야기한 다음 면접관이 갑자기 그 중 특정 부분에 대해 설명하도록 요청하는 것입니다. 시간이 걸리거나 지금 어떻게 생각하는지 물어보는 것보다 더 좋은 방법이 있나요? 이러한 산재된 질문의 대부분은 프로젝트에 사용된 기술과 관련이 있습니다. 당신이 해야 할 일은 당신이 수행한 프로젝트(특히 최근 한두 개의 프로젝트)를 완전하고 완전하게 요약하고 하나 또는 N 개의 하이라이트를 파헤쳐 면접관이 시간이 왔을 때 특별한 인상을 줄 수 있도록 하는 것입니다. .밝은 느낌. 이 효과를 얻을 수 있다면 기본적으로 성공이 멀지 않습니다.

콘텐츠의 이 부분은 모든 사람의 경험과 밀접한 관련이 있으므로 여기에 질문할 수 있는 질문을 나열하는 것은 불가능합니다. 이 글 "프로그래머 면접 경험: 면접 전 질문에 답해야 하는지, 면접 전 어떻게 준비해야 하는지"는 LZ가 이전에 작성한 글입니다. 관심이 있으시면 확인해 보세요.

3. 추가 포인트

위 두 단계는 기본적으로 필수이며, 추가 포인트도 있습니다. 이 가산점 중 면접관은 일부 내용(TCP/IP 프로토콜, 알고리즘 등)에 대해서도 물어보지만 대부분은 먼저 이해했는지 묻고, 이해한 다음 대화를 이어갑니다. 이해가 안 되시면 그냥 건너뛰시면 됩니다. 이런 문제 때문에 직접 지옥에 던져지는 것은 아닙니다.

  아래에 LZ에는 이러한 보너스 포인트가 나열되어 있습니다. 가능하다면 이러한 보너스 포인트를 놓고 싸워야 합니다.

 1. 컴퓨터 시스템의 원리.

 2. 네트워크 통신 프로토콜(TCP/IP, HTTP 등).

 3. 데이터 구조와 알고리즘.

 4. 유명 오픈소스 프로젝트의 소스코드.

 5. 당신은 당신만의 훌륭한 오픈 소스 프로젝트를 가지고 있습니다.

 6. 개인 블로그입니다.

 7. 댓글란에 추가합니다.

이 중 처음 1~3개 항목은 잘 알고 있었으나 시간 문제로 잊어버리셨다면 임시로 하셔도 됩니다. 다음 4~6개 항목은 매일 누적이 필요하며 단시간에 완료할 수 없습니다. 평일에 적립되지 않으면 추가 포인트 3개는 폐기만 가능합니다.

 

 4. 귀하의 직위와 관련된 내용

사실 이 마지막 항목은 이전 세 항목에 대한 보충 내용입니다. 예를 들어, 실시간 컴퓨팅 직무를 위해 인터뷰하는 경우 알고리즘이 강력해야 하고, 유명한 실시간 컴퓨팅 오픈 소스 프로젝트에 익숙해야 하며, 소스 코드를 읽어보는 것이 가장 좋으며, 분산 시스템에 대한 특정 통찰력.

따라서 이번 파트 4에는 구체적인 내용이 없습니다. 단지 자신의 면접 입장이 매우 명확하다면 면접 전에 준비할 때 해당 입장의 요구에 더 가까이 다가가도록 노력하는 것이 가장 좋습니다. 성공할 가능성이 더 높습니다.

이 글을 읽은 후에도 직렬 대포 부분에 대해 몇 가지 간단한 단어를 추가하고 싶습니다. 위에 직렬 대포의 예가 너무 많은 이유는 실제로 모든 사람이 외울 수 있도록 하기 위함이 아니라 여러분이 볼 수 있도록 하기 위한 것입니다. 사회인 채용 면접 루틴을 경험해보겠습니다.

 최종 분석에서 이러한 직렬 대포 예제는 특정 지식 포인트를 얼마나 깊이 이해했는지 테스트합니다. 저자의 개인적인 경험에 관한 한, 사실 위에서 언급한 일련의 대포들을 하나하나 깊이 이해할 필요는 없으며, 상대적으로 깊거나 심지어 면접관의 이해를 넘어서는 한두 가지 요점만 있으면 됩니다. 요구 사항이 충족되었습니다.

 면접관은 모든 지식에 대해 심층적인 정보를 요구하지 않는 경우가 많습니다. 그는 단지 귀하의 이해 능력과 기술적 축적 여부를 테스트할 뿐입니다.

만약 면접관이 한두 가지 기술적 지식 포인트 때문에 당신을 거부한다면, 가능성은 두 가지뿐입니다. 첫 번째는 이 포인트가 실제로 당신이 면접하는 직위에서 매우 중요한 지식 포인트일 수 있다는 것입니다. 알고리즘 직위에 대한 면접이라면 좋은 알고리즘이 없으면 할 수 없고, 운영과 유지보수를 선호하는 기술직에 대한 면접이라면 할 수 없습니다. 리눅스를 잘 할 수 있다.

 두 번째 가능성은 - 과시하고 있다, -_-.

자습 또는 훈련 기관?

  프로그래머에게는 '정규군'이 갖고 있지 않은 공통점이 많습니다. 가장 일반적인 공통점 중 하나는 프로그래머가 사회에 진출한 후 학습 및 입문 단계를 거친다는 것입니다.

  그렇기 때문에 사회에 수많은 훈련 기관이 등장하게 되었는데, '야생' 프로그래머들이 처음 업계에 입문할 때 자주 직면하는 첫 번째 질문은 스스로 공부해야 하는지 아니면 훈련 기관을 선택해야 하는지 하는 것입니다.

 저자는 이런 종류의 질문을 수도 없이 많이 받았습니다. 사실 이 문제는 일반화할 수 없는 문제입니다. 하지만 간단하게 말하자면, 귀하의 가족이 훈련비가 부족하지 않다는 가정하에 말입니다. 훈련 기관에 가거나 그 반대의 경우도 마찬가지입니다.

결국, 돈을 쓰면 항상 더 많은 학습 리소스를 얻을 수 있으며, 이는 적어도 아무것도 없는 것보다 낫습니다.

 그러니까 이 질문을 일반인의 관점에서 표현하자면, 돈이 있으면 공부하고, 돈이 없으면 스스로 공부하세요.

고전 농담처럼, 물건을 살 때 선택 공포증이 있다고 말하는 학생들은 실제로 선택 공포증이 있는 것이 아닙니다. 유일한 이유는, 하하하.

알고리즘이 중요한가요?

위의 공통점 외에도 "야생" 프로그래머에게는 또 다른 공통점이 있습니다. 즉, 전자는 실무에서 이론까지, 후자는 "정규군"의 학습 곡선과 다릅니다. 이것은 일반적으로 알고리즘, 컴퓨터 시스템 원리, 컴퓨터 네트워크 등과 같은 매우 견고한 기본 기술을 갖추지 못한 "야생" 프로그래머를 초래합니다.

개인적으로 수많은 학생들이 저에게 같은 질문을 했습니다. 알고리즘이 중요한가요? 알리바바 인터뷰에서 알고리즘이 테스트되나요?

사실 알고리즘이 중요한지 아닌지에 대한 첫 번째 질문에는 두 가지 대답이 있습니다. 이 질문을하러 오는 학생들이 서로 대결하면 저자의 답변이 사람마다 조금씩 다를 수 있습니다. .

 학생이 물어보면 저자는 알고리즘이 매우 중요하고 열심히 공부해야 한다고 말합니다.

 그리고 직장에 다년간 근무한 사람이 묻는다면 저자는 대개 필요에 따라 배울 수 있다고 말합니다. 당신이 하는 일이 알고리즘과 관련된 일이라면 당연히 공부해야 합니다. 예를 들어 알고리즘 엔지니어라면 알고리즘이 중요한지 알려주세요. 물론 중요합니다!

 그리고 매일 추가, 삭제, 수정, 쿼리를 작성하고 비즈니스에 더 많은 관심을 기울이면 그 에너지를 낭비하지 마십시오. 알고리즘을 배울 에너지가 있다면 비즈니스를 더 많이 공부하고 더 많이 생각하십시오. 기술과 비즈니스의 결합은 알고리즘을 배우는 것보다 더 효과적일 수 있습니다.

두 번째 질문인 알리바바 인터뷰에서 알고리즘이 테스트될 것인지에 대해, 저자는 면접관이 "알고리즘에 대해 많이 알고 계십니까? "라고 질문한 것을 분명히 기억합니다. 그리고 당시 저자의 대답은 다음과 같았습니다. "미안해요, 이걸 어떻게 해야할지 모르겠어요."

 이것을 보고 어떤 학생들은 "작가님, 이렇게 하는 것은 좋지 않습니다. 그렇다고 알고리즘이 모든 사람에게 있다고 말하는 것은 아닙니다."라고 질문하는 학생들이 있을 수 있습니다. 중요하지도 않고, 배우지 않고도 들어갈 수 있잖아요?”

이런 의문을 갖고 있는 학생들은 알고리즘이 중요한지, 배우기 위해 에너지를 써야 하는지 사이에 직접적인 관계가 없다는 사실을 아직 깨닫지 못한 것 같아요.

게다가 알고리즘을 모르는 사람들이 Alibaba에 들어가는 것이 정상입니다. Alibaba의 수천 명의 엔지니어가 알고리즘에 익숙하다고 생각하시나요? 내가 감히 말하는데, 당신은 그것을 믿습니까?

'알고리즘을 잘하는 사람이 연봉이 훨씬 높다'는 오해도 많이 있습니다. 별거 아니지만 추가, 삭제, 수정, 확인 등의 작업을 하고 있다면, 알고리즘을 공부하면서 다른 것을 배우면 연봉이 더 높아질 수도 있다는 점은 확실하게 말씀드릴 수 있습니다.

그러니까 이런 외모에 속지 마세요. 그의 높은 연봉은 본질적으로 알고리즘을 공부해서가 아니라 여가 시간에 공부하기 때문입니다.

 

말하듯이, 배운 ​​것을 적용하세요. 돈을 현명하게 써야 할 뿐만 아니라, 돈보다 시간이 더 소중하기 때문에 현명하게 배워야 합니다

.

물론, 알고리즘을 필요에 따라 배워야 한다는 위의 주장은 수년 전에 졸업하고 직장에 들어간 학생들에게만 적합합니다. 학교 학생이라면 알고리즘에 대한 단어는 단 하나뿐입니다. 죽음으로부터 배우세요! Java 프로그래머의 학습 방법

일상을 마치고 실제 비즈니스에 대해 이야기하고 "야생" 프로그래머가 학업과 경력을 어떻게 보내는지 이야기해 보겠습니다.

이 주제에 대해서는 저자가 이전 기사의 내용을 인용할 예정이지만, 2년이 지났고 이에 대해 저자가 몇 가지 내용을 추가할 예정입니다.

사실 이 부분이 오늘의 포커스입니다. 그룹의 많은 친구들, 즉 LZ가 어떻게 Java를 배웠는지에 대한 질문에 대답하는 데 사용됩니다.

오늘은 LZ가 실용적인 정보에 대해 이야기할 테니 학습 방법이나 기법에 대해 이야기하는 것이 아니라, 각 단계에서 배울 내용과 심지어 책에 대해서도 직접적으로 이야기해보겠습니다. 이 부분의 내용은 Java로 진로를 전환하려는 일부 학생에게도 적용됩니다.

모두가 읽기 전에 LZ는 두 가지 점을 지적하고 싶습니다.

1. LZ 본인이 Java 백엔드 개발자이므로 권장 학습 콘텐츠는 Java 웹 및 Java 백엔드 개발 경로입니다. Java 웹 및 Java 백엔드 개발에 참여하지 않는 학생은 참고하세요. 그러나 그의 학습 아이디어를 적절하게 복사하지 마십시오.

2. 다음 [1부] 추천 콘텐츠는 빠른 시일 내에 취업이 가능한 자바 개발자가 될 수 있도록 돕기 위한 것입니다. 자바로. 학교에 다니는 학생이라면 다음 연구를 고려하기 전에 반드시 기본 사항(예: 컴퓨터 시스템, 알고리즘, 컴파일 원리 등)을 익히십시오.

1단계 - 일을 하지 않는 학생

1. 자바 기초

# 🎜🎜# 먼저 기본 Java 튜토리얼을 찾아서 배우세요. 여기에서 주소를 추천하거나 이 주소를 참조하여 해당 동영상을 찾을 수 있습니다. 주소는 http://www.php.cn/course/입니다. 884.html.

자바의 기초를 배울 때, 최대한 많이 하려고 노력해야 하는데, 당연하다고 생각하는 것들을 작성하고 실행해 보면 그렇지 않다는 것을 알게 될 것입니다. .믿을 수 없다면 그냥 시도해 보세요.

위 내용을 학습한 후에는 Java에 대한 기본적인 이해가 있어야 하며, Java 언어로 몇 가지 간단한 프로그램을 작성할 수 있으며, Notes Book과 같은 가장 간단한 편집기를 사용하게 됩니다.

이때 너무 서두르지 말고 며칠간 시간을 두고 프로그램을 작성하면서 이러한 기본 내용에 최대한 익숙해지세요.

 

2. 웹 개발

며칠 동안 프로그램을 작성하고 나면 작성한 내용이 엉터리인 것 같아서 혼란스러워지는 경우가 많습니다. 간단한 계산기 구현, 파일 읽기 등은 쓸모가 없어 보입니다. 이때는 자신이 흥미롭다고 생각하는 글을 쓰는 법을 배워야 하므로 더 많은 지식을 배워야 합니다.

주로 웹 개발에 관련된 내용으로 HTML/CSS/JS(프런트엔드 페이지), Servlet/JSP(J2EE), Mysql(데이터베이스) 관련 지식을 포함하고 있습니다.

학습 순서는 앞에서 뒤로 하여야 하므로 가장 먼저 배워야 할 것은 HTML/CSS/JS(프론트엔드 페이지) 입니다. 이 부분은 runoob에서 보실 수 있습니다. 위의 웹사이트. 일부 페이지를 직접 작성해볼 수도 있고, 물론 가장 아름답게 만들기 위해 최선을 다할 수도 있습니다. 이 부분의 내용은 백엔드 Java의 이론상 특별히 중요하지는 않지만, 최소한 스스로 간단한 페이지를 작성할 수 있는 수준에는 도달해야 합니다.

다음으로 배워야 할 부분은 Servlet/JSP(J2EE) 부분입니다. 이 부분은 Java 백엔드 개발에 있어서 매우 능숙해야 하는 부분이므로 이 부분이 가장 많이 필요합니다. 세 부분 중 노력을 해야 하며 이때는 메모장을 사용하는 대신 개발 도구를 사용하는 방법을 배워야 합니다.

Eclipse를 다운로드하고 설치한 후, 동영상의 튜토리얼을 따라 단계별로 학습해 보세요. Servlet/Jsp 영상 선정에 관해서는 업계에서 Ma Soldier의 영상을 인정하고 있기 때문에 모두에게 추천하고 있습니다. 물론 LZ 본인도 자신의 영상을 본 적이 없기 때문에 너무 단정적으로 말하기는 어렵습니다.

원래 LZ님도 강의 영상을 올릴 계획이었는데, 시간 문제로 포기하게 되었어요. 하지만 영상을 시청하는 동안 문제가 발생하면 LZ 커뮤니케이션 그룹에 오셔서 질문하시거나 Douyu에 가서 LZ 라이브 방송을 시청하신 후 질문을 하시면 됩니다. 라이브 방송 주소와 그룹 번호는 왼쪽에 있습니다. LZ의 개인 블로그입니다.

마지막 단계는 데이터베이스 사용법을 배우는 것입니다. MySQL은 좋은 입문 선택이며, Java 분야의 주류 관계형 데이터베이스는 MySQL입니다. 이 부분은 Servlet/Jsp를 배우다 보면 주로 노출되는 부분입니다. JDBC 부분은 데이터베이스 관련 부분입니다. 데이터베이스를 운영하기 위해 JDBC를 사용하는 방법뿐만 아니라 navicat 및 sqlyog와 같은 데이터베이스 클라이언트 도구를 사용하는 방법도 배워야 합니다.

 

3. 개발 프레임워크

위 내용을 익힌 후에도 현재로서는 작업하기에 충분하지 않으며 여전히 필요합니다. 공부를 계속하려면. 개발 효율성을 높이기 위해 기업에서는 일부 Java 웹 프레임워크를 사용하게 되므로 일부 개발 프레임워크도 배워야 합니다.

현재 더 주류를 이루는 프레임워크는 SSM 프레임워크, 즉 spring, springmvc 및 mybatis입니다. 이 세 가지 프레임워크를 구축하고 이를 사용하여 간단한 추가, 삭제, 수정 및 웹 프로젝트 쿼리를 만드는 방법을 배워야 합니다. 이러한 구성의 의미와 이를 수행해야 하는 이유를 이해할 필요는 없습니다. 하지만 웹 프레임워크를 구축하려면 이 세 가지를 빠르게 사용할 수 있어야 합니다. 첫 번째 구축 프로세스를 기록할 수 있습니다. 저를 믿으세요.

또한 SSM을 구축하는 과정에서 Maven이라는 도구를 자주 접하게 된다는 점도 언급하고 싶습니다. 이 도구는 향후 작업에서 거의 사용해야 할 도구이기도 하므로 SSM을 구축하는 동안 Maven에 대해서도 배울 수 있습니다. 현재 단계에서는 인터넷에서 Maven의 기본적인 사용법만 배우면 됩니다. 업무 경험이 늘어남에 따라 점차 고급 사용법을 접하게 될 것입니다.

 SSM 프레임워크를 배울 수 있는 주소를 추천하고 싶습니다. 주소는 http://edu.51cto.com/lesson/id-76468.html 입니다.

 4. 취업

개발 프레임워크를 공부한 후에는 학교에 다니는 사람은 인턴십을 찾고, 졸업한 사람은 정규직을 찾습니다. 동시에, 취업을 하면서 공부를 중단해서는 안 됩니다. 정확히 말하면 앞으로도 공부를 중단해서는 안 됩니다.

위의 내용을 서둘러 활용하는 방법을 배웠습니다. 인터넷이 가장 중요한 선생님입니다.

사실 이 학습 경로는 크게 변하지 않았습니다. 유일한 변화는 이전 프레임워크 통합 작업을 많이 줄여주는 spring-boot입니다.

  2011년 작성자 교육을 돌이켜보면 SSH 프레임워크를 구축하려면 jar 패키지를 직접 정리하고 많은 구성을 통합해야 했으며, 주의하지 않으면 다양한 오류가 발생했습니다. 예외는 종종 단순한 NPE가 아니었습니다. 걱정하지 마세요.

그러니까 학우 여러분, 지금의 삶을 소중히 여기세요 하하하.

두 번째 단계 - 0~1년 정도 일한 학생

이 단계는 누구나 겪게 되는 단계입니다. 이 단계의 프로그래머들은 막 취업을 하고 밝은 표정을 짓고 있는 경우가 많습니다. 이곳에서 마치 TV 속 주인공이 된 것처럼 의기양양해지기도 하고, 동시에 자신이 뒤로 물러날까 봐 마음속으로는 약간의 두려움도 느낄 수밖에 없습니다. 조심하지 않으면 다시 원래 모양으로 돌아갑니다.

이런 느낌이 든다면 긴장하지 마세요. 이것은 모두가 경험해야 하는 일입니다. 당신이 해야 할 일은 일과 공부에 완전히 몰입하는 것입니다. 아직도 싱글이에요, -_-.

축하합니다. 현재 귀하는 이미 Java 작업을 수행하고 있습니다. 이 단계는 당신이 극도로 빠르게 성장하는 단계이며, 종종 야근을 할 수도 있습니다.

하지만 야근을 한다고 해서 마음이 편해지는 것은 아닙니다. LZ가 말한 것을 항상 기억하세요. 업계에 들어온 순간부터 계속 배워야 합니다. 올해에는 최소한 "Java 프로그래밍 사고"라는 책을 읽어야 합니다. 이 책의 내용은 자바에 대한 더 깊은 이해를 돕기 위한 것입니다.

이 책은 매우 두껍습니다. LZ가 이 책을 읽는 데 꼬박 3개월이 걸렸습니다. 보통의 속도라면 반년 정도에 끝낼 수 있을 것 같습니다. LZ는 1년 이내에 이 책을 다 읽는다면 요구 사항이 너무 높지 않습니다. 물론, LZ가 읽은 후에 말한 것은 한 번 읽는 것이 아니라 완전히 흡수하라는 것입니다. 따라서 어떤 내용은 두 번 이상 읽을 수도 있습니다.

전체적으로 이 단계의 핵심 학습 아이디어는 직장에서 연습하고 Java의 기본을 더 깊이 이해하는 것입니다.

 책을 읽을 때 책만 읽지 말고, 자신이 작성한 코드가 책 내용과 관련이 있는지 등 항상 생각해야 한다는 점을 덧붙이고 싶습니다.

실용적인 예를 들자면, static 부분을 볼 때, 현재 개발 중인 프로젝트를 통해 static이 사용되는 곳이 있는지, 사용 목적은 무엇인지, 사용 여부를 살펴보시겠어요? 같은 방식으로.

이렇게 읽어야만 책을 제대로 몰입할 수 있습니다. 독서의 궁극적인 목적은 자신의 생각을 촉발하는 것입니다.

  이에 대해 많은 학생들이 저자에게 "책을 읽을 수 없으면 어떻게 해야 하나요? 좋은 방법이 없을까요?"라는 질문을 하더군요.

 여기서 저자는 책임감있게 말씀드릴 수 있습니다. ? 세월은 조용합니다. 누군가가 당신을 위해 짐을 짊어지고 있을 뿐입니다.

그러니 행복할 거라고 기대하지 말고 그냥 책을 행복하게 읽으세요. 하하하.

좋은 방법은 없습니다. 내면의 믿음에 의지하고 스스로를 강요하면 특히 처음에는 그 기간이 지나면 미래에 상대적으로 좋아 보일 것입니다. . 훨씬 더 부드러워졌습니다.

모든 것이 처음에는 어렵지만 독서와 공부에도 적용 가능합니다.

3단계 - 1~2년 정도 일한 학생

이 단계에서는 처음 입사했을 때의 들뜬 기분과는 달리 대체적으로 추가, 삭제, 수정, 검토를 1년 정도 하게 됩니다. 이때 당신은 앞으로 나아갈 길에 대해 생각하기 시작할 것입니다. 그러나 일반적으로 이때는 앞길을 명확하게 보는 것이 어렵기 때문에 약간 불안감을 느낄 수도 있습니다.

그런 불안감이 있다면 걱정하지 마세요. 프로그래머가 되는 길에서 배움을 통해 더 많은 성취감을 느낄 수 있다는 점을 기억하고 계속 배움의 바다에 빠져보세요.

이 기간 동안 학생들은 이미 Java에 대해 더 깊은 이해를 얻었습니다. 그러나 프로그래밍할 때 객체 지향 경험은 충분히 깊지 않을 수 있으며 여전히 기능을 완성하는 수준에 머물며 디자인 문제를 거의 고려하지 않습니다.

 이제 디자인 패턴이 나오네요. 당시 LZ는 "Dahua 디자인 패턴"이라는 책을 읽고 디자인 패턴 블로그의 전체 버전을 작성했습니다. 따라서 LZ에서는 모든 사람이 최대 1년 동안 일한 후에 블로그를 시작하도록 요구하며 디자인 패턴은 블로그의 시작입니다.

LZ가 제시하는 내용은 기본적으로 최소 요구 사항이므로 여유를 갖지 마십시오. 그렇지 않으면 5년 후에는 자신보다 연봉이 높은 사람을 부러워해서는 안 되며, 입사한 다른 사람을 부러워해서는 안 됩니다. 특정 회사.

게다가 올해에는 디자인 패턴만이 유일한 작업이 아닙니다. 코드 작성 최적화에 관한 책도 읽어야 합니다. 예를 들어 "기존 코드 디자인 개선을 위한 리팩토링" 및 "효과적인 Java" 등이 있습니다.

전체적으로 이 단계에서 핵심 작업은 코딩 능력을 향상하고 우아한 코드를 작성할 수 있는 것입니다.

이 단계에서 저자가 추천하는 세 권의 책은 실제로 코드를 더 잘 작성하고 디자인하는 방법을 가르치고 있습니다. 또한 디자인 패턴 시리즈는 문제를 추상화하는 능력도 훈련합니다.

  Java와 같은 객체지향 언어를 사용할 때 추상화 능력은 매우 중요한 능력입니다. 위와 같이 저자는 디자인 패턴, 리팩토링 및 Effective Java에 대한 책을 읽은 후 이를 자신의 프로젝트와 결합해야 한다고 권장합니다. 좀 깊이 생각해보세요.

생각 없는 삶은 불완전합니다. 생각 없이 일만 하는 사람들은 부지런해 보일 수도 있지만 사실은 기계이기 때문에 조만간 대체될 것입니다.

계속해서 생각하고, 과거를 요약하고, 미래를 이끌어가는 사람만이 결국 이 사회의 리더가 될 것입니다.

네번째 단계 - 2~3년 정도 일한 학생

프로그래머들에게 있어서 이 단계는 매우 중요한 단계입니다. 저자의 학습 경로 계획에서 이 학습 단계의 목적은 중급 엔지니어에서 고급 수준으로 이동하여 질적 향상을 달성하는 것입니다. 따라서 이 학습 부분은 이전 두 단계보다 더 어려울 것입니다. 연령.

하지만 이제 이 길에 발을 디뎠으니 더 이상 움직일 여지가 없고 앞으로만 나아갈 수 있습니다.

그러니 정신적으로 준비하고 도전에 맞서세요.

어떤 학생들은 현재 자신이 이미 매우 훌륭하다고 느끼기 때문에 긴장을 풀 수밖에 없습니다. 당신은 아직 훨씬 어리다는 것을 기억하십시오.

이 단계에서 꼭 읽어야 할 책이 ​​있습니다. "Java Virtual Machine에 대한 심층적 이해"라는 책입니다. 이 책은 말할 것도 없이 Java 개발자에게 가장 중요한 책입니다. LZ의 눈에는 이 책이 "Java 프로그래밍 사고"보다 훨씬 더 중요합니다.

게다가 지난 2년 동안 일하면서 어느 정도 동시성에 노출되셨을 텐데요. 이때 동시성 관련 지식에 대한 보다 깊은 이해가 있어야 하며, 이 부분에 대해 LZ는 『Java Concurrent 프로그래밍 실습』이라는 책을 추천합니다. 이 책을 읽는 한 기본적으로 동시성 부분을 이해하게 될 것입니다.

동시에 이 단계에서는 해야 할 일이 훨씬 더 많습니다. 이때 사용하고 있는 프레임워크에 대한 더 깊은 이해가 있어야 하며, Java 클래스 라이브러리에 대한 더 깊은 이해가 있어야 합니다. 따라서 사용 중인 프레임워크의 소스 코드를 포함하여 JDK에 있는 일부 클래스의 소스 코드를 살펴봐야 합니다.

이러한 소스 코드를 이해하기 위한 전제 조건은 디자인 패턴을 잘 이해하고 있어야 한다는 것입니다. 그렇지 않으면 소스코드를 보면 항상 이런 의문이 들 것이다. 이 코드는 왜 이렇게 작성됐을까? 중복되는 것처럼 보이는 이 인터페이스를 정의하는 이유는 무엇입니까?

  또한 이러한 학습 과정은 서로 맞물려 있다고 볼 수 있습니다. 어떤 단계에서든 실패하면 실제로 따라갈 수 없거나 단계적으로 속도가 느려지게 됩니다. 그리고 LZ는 이 단계에서 LZ가 여기에 나열된 것보다 훨씬 더 많은 것을 배웠다는 점을 알려줄 매우 책임이 있습니다. 그러므로 LZ가 말한 것은 단지 최소한의 요구 사항일 뿐이라고 생각하지 마십시오. LZ뿐만 아니라 많은 사람들이 이 기간 동안 이 기사의 범위보다 더 많은 것을 배웠습니다.

속도를 따라가지 못한다면, 몇년이 지나고, 프로그래머 시장이 좋지 않다면 아마 남들보다 월급도 낮을 뿐만 아니라, 회사도 남들만큼 좋지 않을 것입니다. 또한 직업을 전혀 찾을 수 없습니다.

간단히 말해서, 이 단계에서 해야 할 일은 기본 Java 및 Java 클래스 라이브러리에 대한 심층적인 이해를 갖는 것입니다(예를 들어 동시성에 관한 책은 Java 동시 패키지 java.concurrent의 내용입니다). , 즉 JVM 및 JDK의 관련 콘텐츠입니다. 그리고 사용하고 있는 프레임워크에 대해 더 깊이 이해해야 합니다. 소스 코드를 읽거나 공식 문서를 읽는 것이 좋습니다.

게다가 2학년 단계에서도 사용해야 하는 또 다른 학습 방법이 있는데, 바로 바퀴를 만드는 것입니다.

"바퀴를 재발명하지 마세요"라는 주장을 듣지 마세요. 시간과 비용을 절약하기 위해 회사에서 만든 것입니다. 바퀴를 재발명하는 것은 다른 사람에게 가치가 없을 수도 있습니다. 왜냐하면 당신이 만든 바퀴는 이미 존재할 수도 있고 일반적으로 당신이 만드는 바퀴는 기존 바퀴만큼 좋지 않기 때문입니다. 하지만 다른 사람에게 가치가 없다고 해서 자신에게도 가치가 없는 것은 아닙니다.

 바퀴를 만드는 과정은 처음부터 무언가를 만드는 과정입니다. 이 프로세스는 코딩 능력뿐만 아니라 프레임워크 설계 능력도 테스트할 수 있는 체계적인 연습을 제공합니다.

그리고 바퀴를 만드는 과정에서 다양한 문제에 직면하게 되는데, 이는 종종 배움의 기회가 됩니다. 바퀴를 만들면 실제로 많은 것을 얻었음을 확실히 알게 될 것입니다.

따라서 이 단계에서는 위에서 언급한 JVM, JDK 및 프레임워크 소스 코드를 이해하는 것 외에도 다른 사람의 우수한 소스 코드를 기반으로 상상할 수 있는 모든 휠을 빌드하라는 요청도 받습니다.

이 단계에서 작성자는 JVM, 동시성 및 JDK 클래스 라이브러리를 이해해야 할 뿐만 아니라 직접 휠을 구축해야 합니다.

 이 글을 잘 읽어보시면, 알리바바 채용 인터뷰에서 저자가 언급한 대부분의 시리얼 건이 이 단계에서 학습된 것임을 알 수 있습니다. 해당 시리얼 건은 기본적으로 일부 클래스 라이브러리의 JVM, 동시성 및 JDK 콘텐츠입니다.

공교롭게도 알리바바의 채용 요건은 대부분 3년 이상이다.

 이게 무슨 뜻인가요?

빨리 응답하는 학생들은 저자의 학습 계획을 3년 이내에 완료할 수 있다면 3년이 되면 Alibaba에 와서 학습 결과를 테스트할 수 있다는 것을 이해했을 것입니다.

그래서 Alibaba 미들웨어가 여러분을 환영합니다! (위화감 없이 두번 이식했는데 올해 3.75 되네요 -_-)

다섯번째 단계 - 3~4년 정도 일한 학생들

이 단계에 있는 많은 학생들이 이미 한계점에 도달했습니다. 예전에는 차근차근 공부하고 IQ에 흠집만 없다면 90% 이상의 학생들이 (누군가가 묻더군요. 나머지 10%는 어디있나요? 그냥 말하고 싶은데, 제가 어떻게 알죠? / 당황스럽네요) ), 3년 근무 후 약 30원의 연봉 범위에 도달할 수 있습니다. (2015년 이후 베이징, 상하이, 선전의 1선 도시에만 해당).

 그리고 연봉을 더 높은 수준으로 끌어올리고 싶다면(일반적으로 10W가 40W, 50W 등의 수준임) 이전 누적에만 의존하는 것만으로는 부족하므로 코어를 구축해야 합니다. 경쟁력.

이 단계의 학생들은 이미 실력 향상이 어렵고, 이 단계의 학습은 종종 더 다양합니다.

지난 3년 동안 빅 데이터, 분산 캐싱, 분산 메시징 서비스, 분산 컴퓨팅, 소프트 로드 밸런싱 등과 같은 다른 기술에 다소 노출되었을 것이기 때문입니다. 이러한 기술 중 어느 하나라도 능숙하다면 향후 면접에서 큰 이점이 될 것이므로 특정 기술에 관심이 있다면 이때 심도 깊게 공부할 수 있습니다. 기술은 업무에 사용하는 것일 필요는 없지만 관련성이 있어야 합니다.

 그리고 새로운 기술을 연구할 때 함부로 행동하지 않도록 하세요. 오늘 일부 학생들은 빅 데이터 작업에 참여하여 Hadoop 및 Hbase와 같은 작업을 했습니다. 얼마 후, 지루함을 느껴 Redis 등 분산 캐시를 공부하기 시작했습니다. 그러다가 얼마 후 다시 맵리듀스(MapReduce)나 스톰(Storm) 같은 분산 컴퓨팅을 공부하기 시작했습니다.

 결국 다 아는 것 같은 기분이 들어서 빅데이터, 분산캐싱, 분산컴퓨팅에 대해 안다고 이력서에 자랑했지만 사실 그 어느 것 하나도 피상적인 것에 불과했습니다. 때가 되면 면접관은 간단한 질문만으로 알아낼 것입니다.

 프로그래머로서 매일 많은 기술에 노출될 수 있다는 점을 기억하세요. 그러나 기술을 장점으로 삼고 싶다면 대부분의 재능보다 이 기술에 대한 이해가 더 높아야 합니다. . 좋아요.

그러므로 이 단계에서는 더 이상 지난 3년간의 내용을 단순히 공부할 수는 없지만, 깊이가 충분하지 않다면 계속해서 공부해야 하지만, 이 시점에서는 구축에 대해 더 많이 고려해야 합니다. 장점이기도 하고 차이점이라고도 할 수 있습니다.

차이점은 이해하기 어려운 것이 아니라 자신을 독특하게 만드는 것이라고 믿습니다. 처음 3년 동안 공부하면 기본적으로 Java 개발자가 되기에는 충분하지만 훌륭한 Java 개발자가 되려면 아직 멀었습니다.

 소위 탁월함이란 남들이 할 수 없는 일을 할 수 있다는 것을 의미합니다. 처음 3년 동안 배운 내용은 몇 년 동안 Java 개발을 해 온 많은 사람들이 마스터할 수 있습니다. 그래서 자신을 차별화하기 위해서는 다른 방법을 찾고 깊이 있게 공부할 수 있는 방향을 찾아야 하며, 앞으로는 분산컴퓨팅 분야의 전문가, 컴퓨터 전문가 등 이 분야의 전문가가 될 수 있기를 바라면서 깊이 있게 공부해야 한다. 빅데이터 분야 전문가, 동시성 분야 전문가 등

또한, 차이점을 확립하는 것 외에도 기본적인 부족한 점을 보완해야 합니다. 지금까지 LZ는 기본 지식에 대해 언급하지 않았습니다. 그 이유는 기초가 너무 지루하기 때문입니다. 너무 일찍 배우면 혼란스러워지기 쉬울 뿐만 아니라 혼란스러울 때 심리적 그림자를 일으키기 쉬우므로 앞으로 이러한 기초를 공부하고 싶지 않게 됩니다. 하지만 어떤 분야를 공부할 때 기본은 꼭 익혀야 합니다. 예를 들어 분산 컴퓨팅을 공부하고 싶은데 알고리즘을 이해하지 못한다면 그냥 가지고 놀면 어떨까요? 예를 들어 분산 캐싱을 하고 싶지만 컴퓨터 시스템의 메모리를 이해하지 못한다면 어떻게 캐싱을 할 수 있을까요?

 당신의 기초가 이미 매우 탄탄하다면 축하합니다. 이전 작업에서 이러한 기초의 도움을 완전히 깨달았다고 믿습니다. 그러나 LZ는 대부분의 사람들의 기초가 매우 약하다고 믿습니다. 전공을 졸업한 사람이라 할지라도, 많은 사람들은 알고리즘, 컴퓨터 시스템 원리, 컴파일 원리와 같은 원래의 기본 지식이 얼마나 강한지 감히 말할 수 없습니다.

 하지만 모든 사람의 시간은 제한되어 있고, 이러한 기본 책을 모두 읽는 데 1년 반이 걸리기 때문에 여전히 선택을 해야 합니다. 예술은 부담스럽지 않지만 문제는 예술에는 대가가 따르기 때문에 시간과 에너지를 투자해야 한다는 점인데, LZ는 개인적으로 같은 대가로 최대한의 이득을 얻는 것을 선호한다.

우선, LZ가 적극 추천하는 기초서적 세 권이 있습니다. 바로 "컴퓨터 시스템의 심층 이해", "Tcp/IP 상세 설명 1권, 2권, 3권", "데이터 구조와 알고리즘"입니다. 그 중 TCP/IP에 관한 책이 3권 있는데 여기서는 이 3권을 하나의 큰 책으로 본다.

이 세 권의 책은 각각 세 가지 유형의 사람들에게 적합합니다. "컴퓨터 시스템 심층 이해"는 Java 웹 개발 및 APP 백엔드 개발에 종사하는 사람들에게 더 적합합니다. "TCP/IP 상세설명 1권, 2권, 3권"은 네트워크 프로그래밍을 하는 분들에게 더 적합합니다. 예를 들어 netty를 사용해서 개발을 한다면 TCP/IP에 대한 더 깊은 이해가 필요합니다. 방금 언급한 분산 컴퓨팅과 같은 컴퓨팅 연구를 수행하는 사람들에게는 "데이터 구조 및 알고리즘"이라는 책이 더 적합합니다.

또한 LZ는 여기서 언급한 적합성이 다른 두 권의 책이 귀하에게 쓸모없다는 의미는 아니라는 점을 강조하고 싶습니다. 예를 들어 Java Web 및 APP 백엔드 개발을 하고 있다면 "Tcp/IP 상세설명 1권, 2권, 3권"이라는 책도 큰 도움이 될 것입니다. 이는 단지 우선순위를 나열한 것일 뿐입니다. 시간이 충분하다면 세 권 모두 집중해서 읽어보는 것이 가장 좋습니다. 하지만 시간이 제한되어 있다면 가장 도움이 될 만한 책을 골라 먼저 읽어보세요.

이론적으로 말하면, 올해 이 세 권 중 한 권을 집중적으로 읽을 수 있다면 당신은 매우 힘이 될 것입니다. 기초와 이전 직장 경험을 바탕으로 자신의 분야를 탐색할 수 있습니다.

올해에는 자신만의 분야를 계획하고, 자신만의 장점을 확립하고, 차별화를 만들어내야 합니다. 자신의 분야에 대해 충분히 명확하지 않다면, 작업 시간이 길어질수록 점점 더 많은 기술에 노출될 것입니다. 이때 기술의 바다에 빠져들기 쉽습니다. 더 많은 기술에 노출될수록 더 많이 사용하게 되지만 이점은 없습니다.

  "LZ야, 내 분야가 뭔지 모르겠어? 어떻게 해야 하지?"라고 묻는 학생들도 있습니다.

  그런 사람에게 LZ는 "젠장, 나한테 묻는 거야?"라고 말하고 싶을 뿐입니다. 왜요? 제가 가르쳐 드리는 것은 어떨까요? "

이 단계에서 저자는 세 가지 기본 책(운영 체제 원리, 네트워크 프로토콜, 알고리즘)을 언급한 것을 볼 수 있습니다. 이 세 권의 책은 여러분의 지식을 더욱 풍부하게 만들어 줄 것입니다. 1층.

이 글에 언급된 학습 경로를 주의 깊게 맛보면 저자가 얕은 것부터 깊은 것까지, 즉 지식의 깊이를 높이기보다는 지식의 깊이를 높이라고 요구했다는 것을 알게 될 것입니다. 지식의 폭.

이것은 많은 학생들이 저자에게 "넓이를 먼저 갖고 그다음 깊이를 갖는 것이 좋은가요, 아니면 깊이를 먼저 갖고 그 다음 너비를 갖는 것이 더 나은가요?"라고 질문한 질문에 대한 답변입니다. 이 질문에 대해서는 우리가 문제 자체를 놓고 고민해왔다는 오해가 있습니다. 어떤 사람은 먼저 깊이 배워야 폭이 넓어진다고 하고, 다른 사람은 먼저 더 많이 배우고 시야를 넓혀야 발전할 수 있다고 말합니다. 자신의 깊이가 더 좋습니다.

사실 이번 논의에서는 말보다 카트를 먼저 두었습니다. 이 질문에 대한 답은 매우 간단합니다. 어떤 것이 더 나은지는 시장에 어떤 유형이 필요한지에 달려 있습니다.

그래서 위의 질문을 바꿔보면, "만약 경력 5년 미만의 프로그래머를 인터뷰하라는 요청을 받았다면, 특정 분야에 대해 깊게 공부한 사람을 선호하시겠습니까, 아니면 다들 좋아하시나요? 뭔가 아는 사람? "

 답은 자명합니다. 대부분의 사람들은 특정 분야, 특히 일부 1차 및 2차 인터넷 회사에 대해 깊이 있는 연구를 수행하는 사람을 선택할 것이라고 믿습니다.

아마도 이때 일부 학생들은 "풀 스택 엔지니어"라는 개념을 사용하여 반박하려고 할 것입니다. 결국 풀 스택 엔지니어라는 개념은 한동안 매우 인기가 있었고 많은 회사에서 이것을 추가했습니다. 채용 - —풀스택 엔지니어를 우대합니다.

 풀스택 엔지니어라는 개념은 사실 중소기업(혹은 대기업의 소규모 부서)이 인건비를 아끼고 프로그래머에게 집안일을 해주기 위해 꾸며낸 아름다운 거짓말인데, 직접 말하기는 민망합니다. 슬프게도, 풀 스택의 진정한 의미를 모르는 일부 프로그래머들은 여전히 ​​풀 스택을 자랑스러워하며 자신들이 실제로 인기를 얻고 있으며 여전히 사람들이 돈을 버는 데 도움을 주고 있다고 생각합니다.

저자는 여기서 책임감 있게 이렇게 말할 수 있습니다.

직장에 입사한 처음 몇 년 동안은 깊이를 키우는 데 집중하는 것이 올바른 방법입니다

풀스택 엔지니어의 추세는 최근 일부 독특한 방식을 사용하는 것으로 유명한 사람들과 같습니다. 인터넷 유명인들은 일반적으로 단명할 운명이고, 오직 한 가지 기술만이 장기적인 해결책이 될 수 있습니다.

6단계 - 4~5년 근무한 학생

  4~5년은 사실 상대적으로 중요한 단계입니다.

지난해의 경험을 통해 이미 공부하고 있는 분야에 대한 확실한 통찰력을 얻었을 것이라고 생각합니다. 이때 기술적인 병목 현상이 발생했을 것입니다.

 지금은 실력을 향상시키려고 서두르지 마세요. 이제 영향력을 강화할 때입니다. 잘 알려진 회사에 가서 더 많은 사람들에게 영향을 미칠 수 있는 기사를 게시해 보세요. 물론 Github로 이동하여 자신만의 오픈 소스 프로젝트를 만들어 자신만의 제품을 구축할 수도 있습니다. 이번 오픈소스 프로젝트는 이전의 바퀴 제작과는 다릅니다. 이때는 정말 다른 사람에게 가치 있는 바퀴를 만들기 위해 최선을 다해야 합니다.

 기술 학습의 이 단계에서는 병목 현상이 발생하기 쉽고, 특정 수준에 도달한 후에는 학문적 연구에 전문적이지 않은 이상 심화 심화의 효과가 거의 미미한 경우가 많습니다. 불행하게도 대부분의 프로그래머는 과학자들이 하는 일을 할 수 없습니다.

  이때 영향력을 향상시키는 것은 기술적인 병목 현상에 직면하기 쉬울 뿐만 아니라 영향력이 자신에게 더 많은 기회를 창출할 수 있기 때문입니다. 프로그래머는 어느 정도 유명인과 유사합니다. 좋은 TV 시리즈나 영화는 때때로 스타 그룹을 만들 수 있습니다. 좋은 프로젝트는 프로그래머 그룹을 만들 수도 있습니다.

예를 들어, 중국에는 Taobao, Alipay, QQ, Baidu, WeChat 등과 같은 여러 인기 프로젝트가 있습니다. 이러한 각 프로젝트는 프로그래머 그룹을 만들었습니다. LZ는 당신이 여기 있는 프로젝트의 핵심 개발자라면 그러한 타이틀을 갖는 것만으로도 이미 당신에게 큰 이점이 있다고 감히 말합니다. 게다가 제목은 결국 제목일 뿐입니다. 더 중요한 것은 이런 종류의 프로젝트를 수행할 때 경험에 매우 강력해야 한다는 것입니다.

 그리고 그러한 프로젝트에 참여하고 싶다면 운에 의지하는 것 외에도 영향력도 매우 중요한 수단입니다. 예를 들어, 당신이 분산컴퓨팅 분야에 일정한 영향력을 갖고 있다면, 분산컴퓨팅과 관련된 좋은 프로젝트가 있다면 상대방이 당신을 초대할 가능성이 높습니다. 누군가가 당신을 초대하지 않고 당신이 주도적으로 인터뷰에 나간다고 해도 상대방이 이 분야에서 당신의 영향력을 안다면 그것은 분명히 큰 역할을 할 것이며 이 역할은 심지어 당신의 현재 기술 능력을 초과할 수도 있습니다.

그러므로 이 단계에서 귀하의 가장 큰 임무는 귀하의 영향력을 향상시키고 향후 10년 동안의 직장 경력에서 그날을 준비하는 것입니다. 과거에 축적한 영향력과 기술을 바탕으로 훌륭한 프로젝트에 참여할 수 있다면 향후 5년 안에 성공할 수 있을 것입니다.

물론 LZ는 이제 완전히 준비가 되었고 프로그래머 생활을 한 지 4년 반이 채 되지 않았기 때문에 4~5년차에 대해서는 LZ의 의견이 반드시 맞다고는 할 수 없습니다. 누구에게도 적합하지 않습니다. 그러므로 올해는 모두가 각자의 판단으로 어떻게 보낼지 결정하시기 바랍니다.

  저자가 제시하는 제안 중에는 운영체제 원리, 네트워크 프로토콜, 알고리즘에 관한 세 권의 책은 물론, 공부할 분야도 모두 여러분이 선택할 수 있는 내용이 있습니다. 저자가 직접 알려주는 것보다 어떤 책을 읽어야 할지, 어떤 분야를 공부해야 할지.

  이는 실제로 기존의 학습 경로와 일치합니다. 중급 엔지니어가 되면 모두가 같은 것을 배우게 됩니다. 3년이 지나면 수석 엔지니어로 진출한 후에는 모두가 자연스럽게 다른 분야로 이동하게 됩니다.

 어려서도 똑같은 걸 배웠어요. 고등학교에서는 교양과목을 듣기 시작했고, 대학에서는 대학원에 진학하면서 전공을 선택하기 시작했어요...

 글쎄, 대학원을 가본 적이 없다는 것이 문득 생각났어요. 아니 너무 명확하지만, 배움의 길은 좀 더 세분화되어야겠죠?

그러므로 4~5년의 이 단계에서는 사실 정해진 길은 없습니다. 제가 이전에 모두에게 '영향력'을 향상시키자고 제안한 이유는 사실 지금 생각해보면 더 깊은 이유는 다음과 같습니다. 모두가 뭔가를 하길 바랍니다. 예를 들어...에헴...알죠(이것은 완벽한 힌트입니다. 제 생각에는 4가 너무 많지 않다고 생각합니다).

사실 3~5년 차에는 핵심 경쟁력을 키우면서 '화이트워시', 즉 '영향력'을 높일 수 있는 기업에 입사하는 것이 최선의 선택입니다.

 화이트워싱이란?

 하지만 올라가려고 할 때, 즉 고위 기술 관리자가 되었을 때, 아무리 강력한 배경을 가지고 있어도 도움이 되지 않습니다. 이것이 바로 저자가 말하는 '영향력'입니다. ". 사실 "확신성"이라고도 할 수 있습니다.

CTO나 기술 이사가 학력도 없고 대기업에서 일한 적도 없는 열악한 학자인 회사에 대해 들어보신 적이 있나요?

이때 어떤 분들은 손을 들고 "작가님, 틀렸어요. 그런 사람 본 적 있어요! 학력도 없고 대기업에 다녀본 적도 없지만 CTO이고, 매우 강력합니다.”

상황은 두 가지뿐입니다. 첫 번째는 당신이 말하는 사람이 너무 강력하고 이 기사의 범위에 속하지 않는다는 것입니다. 하하. 20명으로 구성된 가짜 CTO. 회사에 사람이 그 정도 밖에 없기 때문에 -_-.

간단히 말해서 "화이트워싱"은 학력이 뛰어나지 않은 경우 회사 배경을 개선할 수 있는 방법을 찾으려고 노력하는 것을 의미합니다.

적어도 언젠가 정말로 CTO 자리를 맡게 된다면 프로필에 "저는 유명한 XXXX 회사에서 일했고 XXX 직위를 맡았습니다."라는 문장을 추가할 수 있습니다. # 🎜🎜#

좀 더 설득력이 느껴지나요?

그럼 이번에도 Alibaba 미들웨어가 여러분을 환영합니다! 5년이 지났습니다, 동창 여러분, 이제 집에 갈 시간입니다! (사장님 올해는 5개 원합니다 -_-)

7단계 - 5년 이상 근무한 학생

이 단계의 학생에 비해 5년 처음 입사했을 때와 비교했을 때, 일의 차이를 떠나 가장 큰 이유는 삶의 변화일 것 같아요.

그러니까 이 단계에서는 일이나 학업에 대한 이야기가 아닌 인생에 대한 이야기를 해보자.

5년 전, 당신은 싱글이었을 수도 있고, 자유로웠을 수도 있고, 열심히 일했고, 직업을 바꾸고 방황했을 수도 있지만, 5년이 지나면 결혼을 했을 수도 있고, 심지어 아이도 낳았을 수도 있습니다. 이때 몇 가지 실질적인 문제를 고려해야 합니다.

자동차를 구입하시나요? 집을 사세요? 안정된?

이 아이템 하나하나가 큰 산과 같아서 1선 도시에서 고군분투하는 직장인들을 짓누르고 있습니다.

특히 주택 구입에 있어서는 이미 연봉 50W를 가지고 있어도 1급 도시에서는 여전히 주택 구입이 매우 어렵습니다.

각종 물건에서 50W가 공제되기 때문에 15W 정도 줄어들 것으로 추정되는데, 지출을 합치면 35W 정도만 절약하면 된다. 1년이 아주 좋은 일이고, 주택의 경우 최소 계약금은 기본적으로 100만 달러입니다(즉, 총 가격은 300W로 이미 1차 양배추 가격입니다). 현재 연봉이 50W 미만인 사람은 말할 것도 없습니다.

게다가 향후 5년 동안 주택 가격이 오르지 않을 것이라고 장담할 수 있습니까? 지난 5년 동안 큰 비용이 들지 않을 것이라고 장담할 수 있습니까?

어떤 학생들은 손을 들고 "저희 부모님이 베이징 2번 순환도로에 집을 사주셨어요."라고 말하고 싶을 수도 있습니다. 그러면 저자는 이렇게 말할 수밖에 없습니다. , "이 동급생은 나가주세요! 하하..."

여기서 논의하고 있는 내용은 주로 2세 학생들에 관한 내용입니다. . 그냥 먹고 즐기세요, 취업하러 나오지 마세요, -_-. #… 기본적으로는 탈출구가 없다고 할 수 있다. 최근에는 정착할 지점이 생겼지만 아무리 봐도 소용이 없는 것 같다.

이에 대해 저자는 제가 예전에 썼던 "프로그래머 여러분, 행동하지 않으면 너무 늦습니다!"라는 제목의 글을 언급해야 합니다. 》 실제로 프로그래머가 어떻게 정착할 수 있는지에 대해 이야기하고 있다.

여기서는 자세히 설명하지 않겠습니다. 관심 있는 학생들은 직접 읽어보세요. 다음은 기사의 인용문입니다.

1급 도시는 돈을 절약하려고 노력합니다. 도시 평화롭고 만족스럽게 살고 일합니다

.

프로그래머의 최종 목적지는 이미 한 문장으로 알려졌는데, 현재 2급 도시 중 항저우가 가장 적합한 도시입니다.

항저우의 인터넷 산업은 상당히 발달되어 있습니다. 급여는 1급 근로자보다 크게 낮지 않고 높을 수도 있지만 평균 집값은 그 절반에도 미치지 못합니다. 또한, 항저우는 아름다운 풍경을 가지고 있으며, 외부에서 열심히 일하는 "야생" 프로그래머들에게 가장 적합한 곳입니다.

최전선에서 항저우로 이동하려면 항상 전환을 수행할 회사가 필요합니다. 말할 필요도 없이 가장 적합한 회사입니다. 에헴... 아시죠... ..( 위화감 없이 이식, -_-)

다른 유명 인터넷 회사들은 대부분 북경, 상해, 심천에 위치해있습니다. 월급이 높아도 생활에 대한 압박감과 부담감이 큽니다. 품질면에서는 항저우처럼 살기 좋은 도시와는 비교할 수 없다고 생각합니다.

벌써 5년이 지났는데, 그 5년의 투쟁은 무엇입니까? 아마도 처음 직장에 들어갔을 때는 의욕이 넘치고 세상을 바꾸고 싶었을 것입니다. 그러나 결혼하고 자녀를 낳은 후에는 세상을 바꾸기 전에 먼저 평화롭고 만족스럽게 살고 일해야 한다는 것을 알게 될 것입니다. , -_-.

그럼 또 기침 기침...

알리바바 미들웨어가 여러분을 환영합니다!

Java 프로그래머 학습 경로 요약

사실 저자가 오늘 이야기하고 있는 것은 "야생의" Java 프로그래머가 어떻게 공부와 노력을 통해 알리바바에 들어갈 수 있는지, 그리고 집을 사서 항저우에 정착하는 방법.

예, 이 학습 경로의 끝은 기술 전문가가 되도록 돕는 것이 아니라 평화롭고 만족스럽게 살고 일하는 방법을 가르치는 것입니다.

결국 밖에서 일하다 보면 대도시에 뿌리내리고 정착하고 싶은 마음이 생기지 않나요?

세상을 바꾸겠다는 원래 꿈은 인생을 정착한 후에 세상을 바꾸는 이야기를 해도 늦지 않습니다.

 물론 한 가지 강조해야 할 점은 학습에 관한 부분(즉, 처음 4년)이 상대적으로 일반적이라는 것입니다. 기본적으로 모든 Java 학습자는 그 당시의 저자의 학습 경로를 참고할 수 있습니다. 불가능하지 않습니다. (면책조항: 저자는 당신이 배우게 될 것에 대해 책임을 지지 않습니다, -_-)

 그러나 정착하는 이 부분(즉, 4년 후)에 대해서는 모든 사람에게 적용되지 않을 수 있습니다. 예를 들어 일부 사람들의 고향. 이런 1 급 도시에 있다면 항저우에 올 필요가 없습니다. 선전에도 알리 센터가 있습니다 -_-.

따라서 작업을 처음 몇 년 동안은 작가의 학습 경로를 따라갈 수 있지만 3~4년 단계로 작업하면(또는 아내를 찾을 때 -_-), 작업을 하면서 공부를 하면서 앞으로 어느 도시에 정착할지, 어떤 회사에 입사할지 계획도 세워야 합니다.

 타겟을 파악한 후에는 해당 도시의 주택 가격, 주택 구입 정책, 정주 정책 등을 면밀히 조사해야 합니다. 또한 회사의 인터뷰와 그들이 선호하는 측면(예: 이 글의 첫 부분 -_-) 그리고 돈이 거의 모일 때까지 기다리세요...

알겠습니다. 뒤에 줄임표를 사용하는 이유는 현재 상사가 항저우에 오실까 봐 두렵기 때문입니다. 그걸 보고 나랑 싸워도 이해해줄 거라 믿어요, - _-.

end:

마지막으로 몇 마디 하겠습니다. 배우는 것 자체도 매우 어렵고, Java를 배우는 것은 더욱 고통스럽습니다. 하지만 이 길을 선택했기 때문에 이를 악물고 노력해야 합니다. 계속해서 노력하면 결국에는 당신의 미래가 정말 밝다는 것을 알게 될 것입니다.

관련 기사:

Java 기본 학습

Java 학습으로 가는 길

관련 동영상: VA 기본 소개 동영상 튜토리얼

위 내용은 알리바바 채용 면접에서 어떤 질문을 받나요? Java 프로그래머의 자율 학습을 위한 몇 가지 참고 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.