인터넷 Java 엔지니어 고급 지식 완전한 읽고 쓰는 능력
이 프로젝트의 콘텐츠 대부분은 중국 Hushan에서 가져온 것이며 저작권은 작성자에게 있습니다. 콘텐츠는 높은 동시성, 배포, 고가용성, 마이크로서비스 및 대규모 데이터 처리 분야의 지식을 다루고 있습니다. 우리는 독자들의 학습과 참조를 용이하게 하기 위해 이 부분의 지식을 체계적으로 정리했습니다.
우리는 또한 알고리즘 프로젝트를 업데이트하기 위해 열심히 노력하고 있습니다! 서면 인터뷰 알고리즘을 준비 중이거나 코딩 기술을 더욱 향상시키고 싶다면 Star에 오신 것을 환영하며 doocs/leetcode를 팔로우하세요.
이 프로젝트를 연구하기 전에 토론 포럼의 기술 면접관이 말한 내용을 살펴보겠습니다. 이 프로젝트는 모든 개발자 친구들이 토론 포럼에서 자신의 아이디어와 실제 경험을 공유하는 것을 환영합니다. Star와 함께 doocs/advanced-java를 팔로우하여 프로젝트의 최신 개발 상황을 추적할 수도 있습니다.
높은 동시성 아키텍처
메시지 대기열
- 메시지 큐를 사용하는 이유는 무엇입니까? 메시지 대기열의 장점과 단점은 무엇입니까? Kafka, ActiveMQ, RabbitMQ, RocketMQ의 장점과 단점은 무엇입니까?
- 메시지 대기열의 고가용성을 어떻게 보장합니까?
- 메시지가 반복적으로 소비되지 않도록 하는 방법은 무엇입니까? (메시지 소비의 멱등성을 보장하는 방법)
- 안정적인 메시지 전송을 보장하는 방법은 무엇입니까? (메시지 유실 문제 처리 방법)
- 메시지 순서를 어떻게 보장하나요?
- 메시지 대기열 지연 및 만료 문제를 해결하는 방법은 무엇입니까? 메시지 큐가 가득 차면 어떻게 해야 합니까? 몇 시간 동안 백로그된 메시지가 수백만 개 있습니다. 어떻게 해결할 수 있나요?
- 메시지 큐를 작성하라는 요청을 받은 경우 아키텍처를 어떻게 설계하시겠습니까? 당신의 생각을 말해주세요.
검색 엔진
- ES의 분산 아키텍처 원리(ES가 어떻게 분산을 달성하는지)를 설명할 수 있습니까?
- ES 쓰기 데이터는 어떻게 작동하나요? ES 쿼리 데이터는 어떻게 작동하나요? 기본 Lucene을 소개할 수 있나요? 역인덱스에 대해 아시나요?
- 데이터 양이 많을 때(수십억 수준) ES는 어떻게 쿼리 효율성을 향상시킬 수 있나요?
- ES 프로덕션 클러스터의 배포 아키텍처는 무엇입니까? 각 인덱스에는 대략 얼마나 많은 데이터가 있습니까? 인덱스당 대략 몇 개의 샤드가 있습니까?
은닉처
- 프로젝트에서는 캐싱이 어떻게 사용되나요? 캐싱을 잘못 사용하면 어떤 결과가 발생합니까?
- Redis와 Memcached의 차이점은 무엇입니까? Redis의 스레딩 모델은 무엇입니까? 단일 스레드 Redis가 다중 스레드 Memcached보다 훨씬 더 효율적인 이유는 무엇입니까?
- Redis에는 어떤 데이터 유형이 있나요? 어떤 시나리오에 사용하는 것이 더 적합합니까?
- Redis의 만료 전략은 무엇입니까? LRU 코드를 직접 작성할 수 있나요?
- Redis의 높은 동시성과 고가용성을 어떻게 보장할 수 있나요? Redis의 마스터-슬레이브 복제 원칙을 소개할 수 있나요? Redis의 센티넬 원리를 소개해주실 수 있나요?
- Redis의 마스터-슬레이브 아키텍처는 무엇입니까?
- Redis Sentinel Cluster는 어떻게 고가용성을 달성합니까?
- Redis의 지속성 방법은 무엇입니까? 다양한 지속성 메커니즘의 장점과 단점은 무엇입니까? 기본 지속성 메커니즘은 어떻게 구현됩니까?
- Redis 클러스터 모드가 어떻게 작동하는지 설명해 주실 수 있나요? 클러스터 모드에서 Redis 키는 어떻게 처리됩니까? 분산 주소 지정을 위한 알고리즘은 무엇입니까? 일관된 해시 알고리즘을 이해하고 있나요? 노드를 동적으로 추가하고 삭제하는 방법은 무엇입니까?
- Redis 눈사태, 침투 및 고장이 무엇인지 이해하십니까? Redis가 충돌한 후에는 어떻게 되나요? 시스템은 이 상황을 어떻게 처리해야 합니까? Redis 침투를 처리하는 방법은 무엇입니까?
- 캐시와 데이터베이스 간의 이중 쓰기 일관성을 보장하는 방법은 무엇입니까?
- Redis의 동시성 경합 문제는 무엇입니까? 이 문제를 해결하는 방법? Redis 트랜잭션을 위한 CAS 솔루션을 알고 계시나요?
- Redis는 프로덕션 환경에 어떻게 배포됩니까?
- Redis 재해시 프로세스를 이해해 본 적이 있나요?
하위 데이터베이스 및 하위 테이블
- 왜 데이터베이스와 테이블을 나누어야 합니까? (고동시성 시스템을 설계할 때 데이터베이스 레벨은 어떻게 설계해야 합니까?) 어떤 데이터베이스 및 테이블 샤딩 미들웨어를 사용해 보셨나요? 다양한 하위 데이터베이스와 하위 테이블 미들웨어의 장점과 단점은 무엇입니까? 데이터베이스를 수직 또는 수평으로 어떻게 분할합니까?
- 현재는 데이터베이스와 테이블로 분할되지 않는 시스템이 있는데, 앞으로는 데이터베이스와 테이블로 분할될 예정인데, 분할되지 않은 데이터베이스와 테이블에서 분할된 데이터베이스와 테이블로 동적으로 전환할 수 있도록 설계하려면 어떻게 해야 할까요?
- 동적으로 확장 및 축소할 수 있는 하위 데이터베이스 및 테이블 구성표를 디자인하는 방법은 무엇입니까?
- 데이터베이스가 테이블로 분할된 후 ID 기본 키를 처리하는 방법은 무엇입니까?
읽기 및 쓰기 분리
- MySQL에서 읽기와 쓰기의 분리를 어떻게 실현합니까? MySQL 마스터-슬레이브 복제의 원리는 무엇입니까? MySQL 마스터-슬레이브 동기화 지연 문제를 해결하는 방법은 무엇입니까?
높은 동시성 시스템
- 높은 동시성 시스템을 설계하는 방법은 무엇입니까?
분산 시스템
인터뷰 연쇄폭격
시스템 분할
- 왜 시스템 분할인가? 시스템 분할을 수행하는 방법은 무엇입니까? 분할 후 더보를 사용하지 않아도 되나요?
분산 서비스 프레임워크
- Dubbo가 어떻게 작동하는지 알려주세요. 등록센터가 다운되어도 통신이 계속 가능한가요?
- Dubbo는 어떤 직렬화 프로토콜을 지원합니까? Hessian의 데이터 구조에 대해 알려주세요. PB는 알고 있나요? 왜 PB가 가장 효율적인가?
- Dubbo의 로드 밸런싱 전략과 클러스터 내결함성 전략은 무엇입니까? 동적 프록시 전략은 어떻습니까?
- Dubbo의 스파이 아이디어는 무엇입니까?
- Dubbo를 기반으로 서비스 거버넌스, 서비스 저하, 실패 재시도 및 타임아웃 재시도를 수행하는 방법은 무엇입니까?
- 분산 서비스 인터페이스의 멱등성을 설계하는 방법(예: 반복 추론 없음)은 무엇입니까?
- 분산 서비스 인터페이스 요청의 순서를 어떻게 보장합니까?
- Dubbo와 유사한 RPC 프레임워크를 직접 디자인하는 방법은 무엇입니까?
- CAP 정리의 P는 무엇입니까?
분산 잠금
- Zookeeper의 적용 시나리오는 무엇입니까?
- Redis를 사용하여 분산 잠금을 설계하는 방법은 무엇입니까? Zookeeper를 사용하여 분산 잠금을 설계할 수 있습니까? 위의 두 가지 분산 잠금 구현 방법 중 어느 것이 더 효율적입니까?
분산 트랜잭션
- 분산 트랜잭션을 이해하고 있나요? 분산 트랜잭션 문제를 어떻게 해결합니까? TCC 네트워크 연결에 실패하면 어떻게 해야 합니까? XA의 일관성을 보장하는 방법은 무엇입니까?
분산 세션
- 클러스터 배포 중에 분산 세션을 구현하는 방법은 무엇입니까?
고가용성 아키텍처
- 히스트릭스 소개
- 전자상거래 웹사이트 세부정보 페이지 시스템 아키텍처
- Hystrix 스레드 풀 기술로 리소스 격리 구현
- Hystrix 세마포어 메커니즘은 리소스 격리를 구현합니다.
- Hystrix 격리 정책을 세밀하게 제어
- Hystrix 실행 내부에 대한 심층 분석
- 요청 캐시 요청 캐싱 기술 기반 배치 제품 데이터 쿼리 인터페이스 최적화
- 로컬 캐시를 기반으로 한 대체 성능 저하 메커니즘
- Hystrix 회로 차단기의 작동 원리에 대한 심층 분석
- Hystrix 스레드 풀 격리 및 인터페이스 전류 제한에 대해 자세히 알아보세요.
- 타임아웃 메커니즘을 기반으로 서비스 인터페이스 호출 타임아웃에 대한 보안 보호 제공
고가용성 시스템
- 고가용성 시스템을 설계하는 방법은 무엇입니까?
전류 제한
- 흐름을 제한하는 방법은 무엇입니까? 직장에서는 어떻게 하나요? 구체적인 구현에 대해 알려주십시오.
퓨즈
- 회로 차단기를 수행하는 방법은 무엇입니까?
- 퓨즈 프레임워크란 무엇입니까? 구체적인 구현 원칙을 알고 계십니까?
- 퓨즈 프레임을 기술적으로 선택하는 방법은 무엇입니까? 센티넬인가, 히스트릭스인가?
다운그레이드
마이크로서비스 아키텍처
- 마이크로서비스 아키텍처에 관한 전체 장은 추가 내용이며 추후 업데이트될 예정입니다. 독자들도 추가적인 개선 사항에 참여할 수 있습니다.
- 마이크로서비스 아키텍처 설명
- 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 마이그레이션
- 마이크로서비스를 위한 이벤트 기반 데이터 관리
- 마이크로서비스 배포 전략 선택
- 마이크로서비스 아키텍처의 장점과 단점
Spring Cloud 마이크로서비스 아키텍처
- 마이크로서비스란 무엇입니까? 마이크로서비스는 어떻게 독립적으로 통신합니까?
- Spring Cloud와 Dubbo의 차이점은 무엇입니까?
- Spring Boot와 Spring Cloud에 대해 어떻게 이해하고 계시나요?
- 서비스 회로 차단기란 무엇입니까? 서비스 다운그레이드란 무엇인가요?
- 마이크로서비스의 장점과 단점은 무엇입니까? 프로젝트 개발 중에 겪은 함정에 대해 알려주십시오.
- 어떤 마이크로서비스 기술 스택을 알고 있나요?
- 마이크로서비스 거버넌스 전략
- Eureka와 Zookeeper는 모두 서비스 등록 및 검색 기능을 제공할 수 있나요?
- 서비스 검색 컴포넌트 Eureka의 주요 호출 프로세스에 대해 이야기해볼까요?
- ...
대규모 데이터 처리
- 많은 수의 URL에서 동일한 URL을 찾는 방법은 무엇입니까?
- 많은 양의 데이터에서 빈도가 높은 단어를 찾는 방법은 무엇입니까?
- 특정 날짜에 Baidu 웹사이트를 가장 많이 방문하는 IP를 찾는 방법은 무엇입니까?
- 대량의 데이터에서 고유한 정수를 찾는 방법은 무엇입니까?
- 대량의 데이터에 숫자가 존재하는지 확인하는 방법은 무엇입니까?
- 가장 인기 있는 쿼리 문자열을 쿼리하는 방법은 무엇입니까?
- 서로 다른 전화번호 수를 계산하는 방법은 무엇입니까?
- 5억 개의 숫자에서 중앙값을 찾는 방법은 무엇입니까?
- 쿼리 빈도별로 정렬하는 방법은 무엇입니까?
- 상위 500개 숫자를 찾는 방법은 무엇입니까?
- 빅데이터의 TopK 문제에 대한 일반적인 루틴에 대해 알려주십시오.
스타 트렌드
참고: 이 추세 차트는 actions-starcharts(작성자 @MaoLongLong)에 의해 정기적으로 자동으로 새로 고쳐집니다.
Doocs 커뮤니티 품질 프로젝트
Doocs 기술 커뮤니티는 인터넷 개발자를 위한 완전하고 지속적으로 성장하는 학습 생태계를 만들기 위해 최선을 다하고 있습니다! 다음은 Doocs의 훌륭한 프로젝트입니다. 개발자 여러분의 지속적인 관심을 부탁드립니다.
# | 프로젝트 | 설명하다 | 열 |
---|
1 | 고급 자바 | 인터넷 Java 엔지니어는 높은 동시성, 분산, 고가용성, 마이크로서비스 및 대규모 데이터 처리와 같은 분야의 지식을 다루는 고급 지식에 대해 완전한 지식을 갖추고 있습니다. |
|
2 | 리트코드 | LeetCode, "Sword Pointer Offer (2nd Edition)", "Programmer Interview Code (6th Edition)" 문제 해결을 다양한 프로그래밍 언어로 구현합니다. |
|
3 | 소스 코드 헌터 | 일반적인 인터넷 구성요소 프레임워크의 소스 코드 분석. |
|
4 | jvm | Java 가상 머신의 기본 원리에 대한 지식 요약입니다. |
|
5 | 코딩 인터뷰 | "The Sword Points to Offer", "프로그래밍의 아름다움" 등 코딩 면접 질문 모음 |
|
6 | MD | 매우 간결한 WeChat 마크다운 편집기. |
|
7 | 기술 서적 | 읽을 가치가 있는 기술 서적 목록입니다. |
|
기부자
Doocs 기술 커뮤니티에 기여한 다음 친구들에게 감사드립니다. 프로젝트 유지 관리에 참여하려면 여기를 클릭하세요.
공식 계정
Doocs 기술 커뮤니티의 유일한 공개 계정인 " Doocs "입니다. QR 코드를 스캔하여 팔로우하세요. 기술 분야 관련 지식과 최신 산업 정보를 공유하는 데 중점을 두고 있습니다 . 물론 내 개인 WeChat 계정(참고: GitHub)을 추가하여 기술 교환 그룹에 참여할 수도 있습니다.
" Doocs " 공개 계정을 팔로우하고 PDF 에 회신하여 이 프로젝트의 오프라인 PDF 문서(에센스 283페이지)를 얻으세요. 학습이 더욱 편리해집니다!