반응형
일. 서언
최근 2선에서 일선으로 나가려다 원격면접이 성행한 틈을 타 과감하게 원격면접을 했고, 마주친 면접문항은 주로 php+go의 일부 문항으로 채워졌다.일부 질문에 답안이 붙어 있으니 여러분이 일자리를 찾는 데 도움이 되기를 바랍니다.
먼저 면접은 작은 회사에서 큰 회사로 가는 과정입니다. 작은 회사는 주로 손재주를 위해 면접의 리듬을 익히고 그 뒤에 면대 회사를 갑니다.가급적 처음부터 큰 회사에 다니지 않도록 준비 부족이 생기기 쉬운데...또한, 알고리즘은 정말 어렵다!
2、본면접 문제
1.알 수 없는 작은 회사A
1.k8s 서비스 등록
답:k8s참조필기하다
2.rabbitmq의정보 확인 메커니즘, 항목 안은 어떻게 확실합니까?인정하다
메시지 확인:
1) 생산자 도착소휴식 행렬, 이것은 메시지 행렬을 이용하는 것이다.
의 confirm 메커니즘과 영속화 메커니즘, 영속적인 말생산자에게 ack 확인 메시지를 보냅니다.
생산자트랜잭션 또는 conf로만 설정할 수 있습니다.irm, 공용할 수 없습니다.
2) 메시지 큐,내부에 유일한 msg_id가 있습니다.이 아이디로 메시지 중복 발송 여부를 판단하고, mq는 예
메시지 수신 여부
3) 소비측, 소비측비용 성공 시 ack을 소비자 큐로 발송소비 큐에서 메시지를 삭제합니다.
$q->nack($message)->getDeliveryTag( )); // deliveryTag 가능rabbitmq에게 성공적으로 메시지를 전달하기 위해 사용합니다. 이 메시지 지우기
중복 소비 방지:
1)업무상 필요 있음메시지 큐를 피하는 유일한 아이디메시지를 반복한다. 일반적으로 db의 고유 필드와 일치하거나 r을 사용할 수 있다.edis 필터 구현
메시지 배포 전략:
1) 윤트레이닝 배포 모델. 소비자 한 명 한 명 한 명씩 받기.메시지 수가 똑같아요
2) 공평하게 분배하면, 소비자의 편익을 고려할 것이다.전소비능력 등
3.rabbitmq 리얼시성은 어떻게 실현됩니까?
A:항상 유지 보수프로세스 상주, 실시간으로 큐비 읽기만 하면 됩니다.일반적으로 사용되는 유지보수 도구는 다음과 같습니다.
3.레디스와 마이즈ql의 일치성, 항목에서 어떻게 사용하나의
조회:
데이터는 정수로 나뉜다.동태 데이터에 근거하다.
정적 데이터: 직접redis를 읽고, 없으면 묵음을 반환합니다.가치를 인정하다
동적 데이터: 직접redis를 읽고, 없으면 묵음을 반환합니다.가치를 인정하다
업데이트:
1) 오래된 데이터 캐시의 매핑( key 삭제), 느린 업데이트매핑 관계 저장(Set)
2) mq 비동기경뉴 db
질문:redis 정전, db 읽지 않고 바로 돌아온다.기본값입니까?
답: 네, 왜냐하면클러스터가 있는 고가용성(HA)은 최대 몇 가지 문제가 발생합니다.초 안에 하나씩 다시 잡아당기세요.
게다가 세다근거는 최종적인 일치성이다.
3) 데이터 생성, 열기시작, db에 쓰기, 업데이트하기레디스까지 사무 제출.
4) 모든 데이터가캐시된 쿼리가 손실되지 않도록 기본값으로 처리됨패, 데이터 없는 상황으로 돌아가다
4)레디스 매듭구성: hash 구조 저장소, hmget,hgetall
5)초기화는 천천히데이터가 저장되지 않으면 어떻게 합니까? 스크립트가 있는 데이터를 redis에 기록합니다.
6) mq 안의 수어디서 소비하는지는 udc.joB
4.고동시 초살 장면 설계레디스가 어떻게 초살한 거야?
레디스 참조부분적으로는 이미 1초 살상 시스템을 설계했다.
5.레디스 빅키저장, value 저장 방법
1)복수로 분할key-value, mul로ti사무는 조합에 가서 조회한다.단회 조작 압력을 분해하다.
2) has 사용h 저장, 각 필드 세대표 속성. 조회할 때 속성 부분,
저장하시면 돼요속성별 저장. 본질적으로 분할
3) 저장할 때, key를 몰딩하여 분할, 할당다른 키 위에
6.레디스 클러스터 동기화데이터
(1) 【소유】redis 노드 상호 연결(P)ING-PONG 메커니즘)] 내부 바이너리 프로토콜 최적화
전송 속도와 대역폭。
(2) 노드의fail은 클러스터를 통해 [과반을 넘는다]수의 노드 검출 무효]만이 유효합니다.
(3) 클라이언트redis 노드에 직접 연결, 필요 없음중간 프록시 계층. 클라이언트는 클러스터의 모든 노드를 연결할 필요가 없습니다.
[클라이언트 연결 세트]그룹 중 어느 하나의 노드를 사용할 수 있으면 된다]
(4)Redis클러스터는 16,384개의 버킷을 예약한다.Redis 클러스터에 key-value를 설치해야 할 때,
key 계산하기어느 통에 value를 넣을지
(5) 클러스터 정상작업에 최소 3개의 마스터 노드가 필요합니다. 모두6개의 노드가 필요한데, 그 중 3개는 마스터 노드이다.
3개가 슬레이브 노드
--- 조회
(1) 계산 key가 있는 홈은 이 노드에서 직접데이터를 되돌리다
(2) 본 절에 없다점, move, c 가이드 실행lient는 대응하는 슬롯을 담당하는 노드로 이동한다.
그리고 클라이언트는 다시실행하려는 키와 관련된 메시지를 보냅니다명령
7.mysql 아키텍처에 대한이해합니다.
A: 클라이언트 기모노필수적으로 구성하다.
클라이언트 프로세스 웨어서버 프로세스가 MySQL문을 보냅니다.서버 프로세스 처리 후 클라이언트 프로세스로 처리 결과 보내기
클라이언트:대응매칭설정: [client], [m]ysql],[mysqladmin]
서비스 측:대응 설정설정:[server], [m]ysqld, [mysqld_safe]
엔진 부분:mysql에서 파일과 교차하는 부분시스템, 공식적으로 제공되는 파일 액세스 계층
추상적인 인터페이스를 하나 하다.파일 접근 방식을 사용자 정의하다
실행 과정:
(1)클라이언트 연결 서비스 측, mysql-uxxx -pxxxx
(2)서비스 측에서 조회 캐시를 진행하지만 5.7 권장하지 않음, 8.0 폐기
(3)서비스 구문 해석, 판단 요청어법이 올바른지, 그리고 텍스트에서 조회할 표 등
(4)쿼리 최적화: 실행 계획을 생성합니다.이 실행 계획은 어떤 인덱스를 사용하여 조회해야 하는지, 표 간의 연결을 보여줍니다.순서가 어떻게 되냐?
(5)저장 엔진: MySQL server 쿼리 최적화 완료 후 생성된 실행 계획에 따라 불러오기만 하면 됩니다
저층 저류엔진에서 제공하는 API, 획득 수나중에 클라이언트로 돌아가면 된다.
8. 왜 아이템에 쓰는가콜이 배차해 주는데, 왜 안 해?rpc를 쓰면 그 차이는 뭘까.
A:https://blog.csdn.net/AlbenXie/article/details/105230018
(1) http헤더의 공간을 차지합니다.너무 많아, rpc는 보통 이것을 최적화한다.
(2) rpc는HTTP 2.0 기반, r 감소tt, 롱커넥션에서 우위
(3) rpc전출력의 직렬화 역직렬화는 pr일 수 있다.otobuf
(4)rpc 프레임랙은 재시도 메커니즘과 라우팅 전략을 포함한다.로드 밸런싱 정책, 고가용성 정책,
트래픽 제어 전략 등메시지 처리에 사용할 수 있는 기능
9.php의 배럴 구조
(1) 벅et 버킷 구조, 실제 데이터가 저장됨여기서는 체인 주소법으로 충돌을 방지한다.(레디스도)
데이터는체인시계가 연결된 foreach는주어진 순서에 따라 다음 요소의 포인터를 찾아 차례로 이동합니다
(2)하나의 hashtable 기본 8 b 할당ucket, 저장된 요소가 8개보다 크면 자동으로 용량이 확장됩니다.
용량을 확대한 후의 크기는2의 배수. 보통 먼저 보고 지우는 게 일반적이다.요소가 임계값에 도달했는지 여부, 도달하면 재구성
색인. 도착하지 않았습니다.역치는 용량을 확장한다.*2
(3) php의forach는 for보다 빠르다.왜냐하면 forach는 첫 버켓의 포인터를 직접 들고 다니기 때문에 절약합니다.갔다.
key를 계산하는 hash값의 과정, 같은, next(), prev() 등의 방법도 직접 hashtable에서올라가면 바로 값이 나온다.
(4)php7그 후, 먼저 계산키를 통해 얻는다.value 위치, 그리고 key를 중간 테이블, 중간 테이블로 저장
기본 저장소 키value와의 매핑 관계.용량을 확장할 때는, 중간표도 다시 계산해야 한다.
(5)php 삭제배열의 원소를 제거하는 것은, 결코 즉시가 아니다.삭제한 것은, IS_UNDEF로 표기되어 용량을 확대한 경우일 뿐입니다.
진짜 삭제가 되는 거죠떨어지다.
(6)찾을 때 먼저해시 목록에서 nIndex에 매핑bucket 배열에서 value의 위치 idx를 얻는다.
다시 버크에서t 배열에서 요소를 제거합니다.
2.알 수 없는 작은 회사 B
1.include와 require의 차이
답:
1) 잘못을 보고하다
include 파일을 가져올 때:잘못하면 주겠다프롬프트를 표시하고 아래의 코드를 계속 실행합니다.
require 파일을 가져올 때, 예를 들어잘못하면 주겠다프롬프트를 표시하고 아래의 코드를 실행 중지합니다.
2) 파일 인용 방식
include() 실행 시 참조할 파일당차례는 모두 독취와 합을 해야 한다.평가하다
require() 실행 시 참조할 파일만한 번 처리하다
3)include_once 함수와 include 유사, 단지근데 딱 한 번만 도입이 돼요.
2.composer insall과 upd에이트의 구별
A: install에서 lock 파일 읽기없으면 읽어라.json 파일을 가져와서 lock을 생성합니다.
update에서 json을 읽을 수 있습니다.최신 의존도를 끌어당기고,새 버전을 lock에 기록합니다.
즉, 로컬에 loc이 없을 때k파일때,install과 update는 동일합니다.
3.쿠키와 세션
A: 서비스 측에서 쿠키를 생성하여 고객에게 돌려줍니다.클라이언트 요청쿠키 가지고 다니면서
서비스 측에서 쿠키와 sessi 가져오기on_id,
그리고 session 파일을 읽어주시면 됩니다.비교 클라이언트의 co오케이 됐다.
session은 cookie에 종속되어 있습니다.네, 쿡이 필요해요.iie 저장 session_id.쿠키가 꺼졌을 때,
url 덮어쓰기나 폼 숨김 필드를 통해 제출하기세션_id
4.sql 주입,xss,csrf
A: sql 주입, sql 명령 입력아니면 sql 코멘트,sql을 스플릿 할 때 모든 게 다 나와
사용자 정보.
대비: 사용자 입력을 필터링하여 전처리를 사용합니다.스플릿 sql
xss 크로스 플레이 스크립트: 웹페이지에 악성 스크립트 삽입. 롱타입은 입금으로데이터베이스, 읽어낼 때 악성코드가 뜬다.
반사형은 이메일 등을 통해 사용자 포인트로 유도악성 링크를 클릭하다.
방범: 사용자 입력 필터, 쿠키 추가빽빽하다
csrf:국간에 위변조를 요청한다.A의 쿡을 받다ie,악의 사이트 b에 접속하면 b가 a의 쿠키를 들고 a사이트에 접속할 수 있다.
방범: 토큰 메커니즘, 검증 referer
5.git pull과 git fetch의구별하다.
A: 로컬로 원격 코드를 업데이트합니다.
(1) 깃풀은 폭력합에 해당그리고 직접 코드 당김합쳐서 git fetch + git merge에 해당합니다.
(2)git fetch(다운로드) 풀러코드 교체 후, 일반 수요코드를 수동으로 병합하려면
6.스레드란 무엇인가, 스레드의 컨텍스트 전환
A: 컨텍스트 전환: 컨텍스트 전환은 다음과 같습니다.현재 실행 중인 작업 전환다른 임무 수행에 이르는 과정.하지만,
다음 번에도 정확한 위치에서 계속 할 수 있도록전환하기 전에, 네.이전 작업의 상태를 저장합니다.
프로세스 전환:
(1) 새 주소 공간을 사용하도록 페이지 디렉터리 바꾸기
(2) 커널 스택(함수)과 하드웨어(송신) 전환메모리)
레지스터:cpu 내부의 컴포넌트, 저장할 수 있음데이터, 저장 주소,지령 등
7.trait의 장점
위선 상속.php의 한 클래스가 여러 개를 상속할 수 있습니다.인터페이스, 상속만 가능부류.
trait을 사용하면 여러 부부를 상속할 수 있다클래스, 코드 다중화 회피
8.하중 평형 원리
Lvs의 nat:
클라이언트 -- > Load 발렌서 -- > RS -- > Load Balancer -- > 클라이언트
1) LB는 수정하여 클라이언트에서 보내올 수 있습니다.ip헤드, tcp헤더, rs 서버 그룹 찾기
2) 서버가 응답하면 보내드립니다LB 게이트웨이, LB 다시ip와 tcp 메시지를 수정하여 클라이언트로 보냅니다
LVS의 DR:
클라이언트 -- > Load 발렌서 --> RS --> 클라이언트
1)Rs 공용 ip, LB대외 서비스, 초청을 받다.나중에 rs에 할당하다
2) rs직접 패킷 전송계정
9.mysql의 긴 연결과 짧은 연결, 어떤 특장점이 있는가.점, 프레임에 사용어?
A: 긴 연결이란 한 연결에서 여러 개의 숫자를 연속해서 보낼 수 있는 것을 말한다.가방에 의하면, 연결 중에 유지된다.기간에,
패킷이 전송되지 않을 경우, 쌍방의 전송 링크가 필요합니다.검사 가방.
mysql의 긴 연결은 장기간 방치할 경우, mysql은 8시간입니다.후(기본값) 이 연결을 끊습니다.
10.스레드풀의 대략적인 디자인
(1) 최대접속과 최대접속 빈을 설정한다빈 수. 가장 빈 시간보다 작음숫자는 다 쓰고 연못에 들어간다.최대 유휴 상태보다 크면 해제
(2) 대기열을 표시하기 위해 하나 더 필요하다.열. 요청이 없을 때 데이터베이스 연결이 비어 있으면 대기열에 들어갑니다.기본 시간 초과 설정, 시간 초과 오류
(3) 링크 사용이 끝난 경우 여부를 판단한다.대기 행렬 수요가 있다.있으면 대기 중인 수요로 돌려주고 없으면 물에 들어간다.
(4) 균형과 살림살이.균형은 대열을 먼저 채택할 수 있다.진선출 방식 유지 .살아남으면 심장박동 보내기, 연결 활성 유지
11.php의 배열 확장
배열 저장소는 빈 메모리의 연속성을 알고 있습니다.간, 그렇게 용량을 늘렸을 때후는 가상 메모리의 방식이다.
아니면 그냥 메모리 한 덩어리만 신청할까?
A: 해쉬태블 기본 할당8개 버켓8개 이상의 요소가 저장되면 자동으로 용량을 확장합니다.
용량을 확대한 후의 크기는 2의 배수이다
3.말벌집 한쪽 면
1.파이썬의 슬라이스를 아시나요
A: 슬라이스 동작의 기본 표현식:object[start_index:end_index:step]
(1)콜론: '아낄 수 있다.생략, step은 1로 한다.
(2)step의 플러스 마이너스 세대시계의 방향
2.okr과 kpi의 차이
(1) OKR 전원 강조KPI는 경영진의 사고를 강조한다.
(2) OKR 자아 강조드라이브;KPI는 외부 드라이브를 강조한다.
(3) KPI 당나귀만 허용힘차게 걸으며 OKR은 당나귀 머리를 올바른 방향으로 향하게 하는 데 사용합니다.
3.es 1억 넘었다, 했나어떤 최적화를 거치는지
A: 먼저 es 데이터는 디스크에 있습니다.위에서, 모든 쿼리는 쿼리 캐시에 저장되며 캐시가 없습니다.
디스크로 가서 천천히 새로 고칩니다저장. 캐시는 일반적으로 시스템 메모리의 50%를 차지합니다.
(1) 핫 데이터 단독 인덱스 작성mysql과 유사한 표.
hash% 가능64 이렇게 하면 인덱스가 작아집니다.
(2) 조회 부분 사용 불가복잡한 조인, parent-child 이런 거
그다음에 filt.er 조회 효율이 query보다 높고, 데이터를 캐싱하여 다음 조회가 용이합니다.
(3) 페이지를 너무 크게 나누지 마라, es페이지마다 모든 노드에 데이터를 조회한 후
node1, no로 돌아가기de1은 결국 데이터를 반환하므로 작은 쪽만 분할하면 된다.
4.mysql 삽입 데이터, 전원 끄기 중량열었을 때 데이터가 손실됩니까, 왜
답: 리돌을 믿고 있다.og, 트랜잭션 실행 시 버퍼에 먼저 기입하고, 두 단락의 제출방식으로,
복구가 완료되었음을 보증합니다.옴밋의 데이터.
checkpoint: 디스크에 새로 고침된 redo log의 id를 기록합니다. mysql을 다시 시작하면 이전부터 계속됩니다.
checkpoint 회복이 시작되고 회복 속도가 빨라진다.
(1) 사무집행여러 단계
① InnoDB)prepare redo log
② SServer)write binlog
③ InnoDB)commit redo log
(2) 위 c에서헥포인트가 복구되기 시작하며 redo log 상태가 두 개일 경우 바로 제출합니다.
만약 레도가 prepare만 있다면 사무아이디를 가지고 binlog를 조회하고 binlog에 기입이 있으면 제출합니다.
binlog 없음쓰기 시작하면 트랜잭션을 롤백합니다.
5.tcp의 세 번의 악수는 특유의 것일까.udp가 있을까요, udp를 아시나요?
(1) tcp와 udp의구별하다.
1)tcp 믿을 수 있다udp는 믿을 수 없다.
2)tcp먼저 연결하기, udp 필요 없음
3)tcp는 하나일대일, udp는 일대다 가능
4)tcp효율낮음, udp 효율 높음
5)TCP 있음슬라이딩 창은 유량을 조절할 수 있지만, UDP는 유량을 조절할 수 없습니다
6)TCP는바이트 스트림을 지향하는 전송 계층 프로토콜이지만, UDP는 메시지 지향 전송 계층 프로토콜이다.
7)TCP의응용 장면은 메시지의 정확성과 순서에 대한 요구가 높은 장면이다.
UDP는통신 효율이 높고 정확성이 상대적으로 요구되는 시나리오에 적용하는 것이다.
(2) 바이트 스트림을 향하여신문의 구별
바이트 지향: TCP는 앱을 일련의 구조 없는 바이트 스트림으로 본다.TCP에는 버퍼가 있습니다.
응용 프로그램에서 전송될 때데이터 블록이 너무 길면 TCP는 그것을 짧게 나누어 전송할 수 있다.
만약 앱 1한 바이트씩만 전송해도 TCP는 충분한 바이트가 축적될 때까지 기다릴 수 있습니다.
메시지 단락을 재구성하다.내보내다
메시지: 보낸 사람UDP는 응용계층이 보낸 메시지에 대해 병합하거나 분할하지 않고,
그 위에 덧칠만 할 뿐위 헤더(최소 8바이트)를 다음 네트워크 계층에 넘겼다.
(3) tcp 비스코스백
A: 보낸 사람수신자가 수신할 때 패킷으로 붙이는 몇 개의 패킷을 수신 버퍼에서 보면,
뒷포장의 헤더앞 패킷의 데이터 끝에 이어집니다.
하프 패킷: 패킷 비율크며, TCP는 한 번에 절반만 보낼 수 있습니다.
주의:udp아니오스티치백이 존재하여 작은 가방은 병합되지 않습니다.
점착의 원인:
1)발보낸 사람이 여러 개의 작은 패킷을 병합하여 하나의 확인 시 함께 보냅니다
2) 잇다수신자는 데이터를 캐시에 수신하고 프로그램은 캐시에 가서 읽습니다.프로그램 읽기 속도가 <수신 속도>일 때,
될 수 있다끈적끈적한 가방.
솔루션:
1)발보내는 사람이 TCP_NODELAY 옵션을 사용하여 Nagle 알고리즘을 닫습니다
2)발보내실 때 길이도 보내드릴게요.프로그램 수신 후 기장에 따라 확인
가방의 크기를 나눈 다음 분할한다.
(4)tcp는 사실 없어가방의 개념
TCP는 바이트입니다.플로우 프로토콜은 확실히 가방 개념이 없습니다. 가방은 응용 계층 개념입니다. 단지 개념이라고 합니다.
끈적끈적한 가방.
(5)ip 가방 낱장
1) 최대 전송장치: 데이터 링크 계층은 모두 데이터 프레임의 길이를 제한합니다. 즉, 링크 계층이 할 수 있습니다.
감수 최대수길이에 따라 이 값을 최대 전송 유닛, 즉 MTU라고 한다.
보통 150이에요0바이트.
2) IP 패킷에헤더에서 IP 패킷의 길이를 16비트로 기술한다.IP 패킷 하나, 최대 65535바이트일 수 있음
3) ip 가방으로MTU보다 크면 분할하여 여러 개의 패킷으로 나누어 전송한다.만약 설정된다면
따로따로 나눌 수 없고, 따로따로 나눌 수 없다패킷이 버려져 보고 오류가 발생했습니다.
4)TCP의옵션 필드에 최대 메시지 세그먼트 길이(MSS)가 있습니다. 보통 1024바이트입니다.
5)ip머리길이도, TCP 헤더의 길이는 모두 20바이트로 고정됩니다.
6) IP 헤더여기서, 세 개의 로고는 하나의 패킷을 묘사하는데 사용된다.
단편화하다로고(0/1, 조각 간격띄우기 로고(조각은 원래 포장의 위치에 있음), 조각은 허용되지 않습니다.
6. mysql과 redis처럼데이터 일관성 보장
응용 장면에서 분석하다.많이 읽고 적게 쓰고 많이 읽으면 캐시 전략을 이해할 수 있다.
캐시 정책:
더 많이 읽고 덜 쓰기:
(1)캐시메모리존재하지 않으면 기본값으로 돌아갑니다
(2) 갱신 시캐시 업데이트 대기, 대기열이 비동기적으로 db
(3) 데이터 예열, 시스템을 시작하기 전에 스크립트를 사용하여 캐시를 실행한다
적게 읽고 많이 쓰기:
(1)매번 읽기, 캐시 없이 쓰기
(2) 갱신 시대기,데이터 업데이트,캐시삭제.
(3) 많이 쓰고 적게 읽다그러면 캐시의 업데이트 소모가 줄어들게 됩니다.
7.php7.0 인용에 대하여 카운트하는최적화는 어떤 것이 있습니까?
답:
1)당정형, 부동소수점형,정적 문자열 값을 지정할 때 인용 수가 0입니다.
다이나믹 문자열은함수로 생성된 문자열, 이 문자열은 참조 카운트가 있습니다.
왜냐하면 php7의zval_struct가 아닌 카운트 value를 참조합니다. 데이터 형식이 단순할 때,
밸류는 할 수 있어요직접 저금하다.
2) 인용&후, refcount2
3) 불가변수조, 곧게 뻗는다고정 내용의 배열이 할당되며 초기 카운트는 2.
동적 배열 초기 카운트는 1.
4) 순환 참조로 메모리 생성유출. 예를 들면:
// 배열 루프인용하다
$arrA[']arrA'] = &$arrA;
4.말벌집 이면
1. rabbitmq가 분산되어 있나요? 대략 아키텍처는 어떤가요?
A:분포식이다.
메인 백업 클러스터 모드, 스탠바이로 고가용성 실현.
미러 모드, 한 노드의 데이터가 3개의 다른 노드로 동기화됩니다. 보증
데이터는 손실되지 않습니다.
2. kafka, 데이터 잃어버릴까, 데이터 잃어버릴 땐 어느 단계, 어떻게 처리할까?
A: 잃어버릴 거야. 주로 생산자, 서버, 소비자 몇 가지 방향에서.도리.
(1) Broker:broker는 topic 데이터를 저장합니다..topic에 N개의 p가 있다면artition,
클러스터에 N개의 broker가 있으면 각 broker가 t를 저장합니다.opic의 partit 하나ion.
kafka는 대량으로 데이터를 처리하는 방식으로 버퍼가 존재한다.
이는 브러시 메커니즘의 파라미터를 조정함으로써만 완화될 수 있다.예를 들어 브러시 간격이 줄어들면
브러시 데이터의 양을 줄이다.시간이 짧을수록, 성능이 떨어질수록 신뢰성이 좋아집니다(될 수 있는 한 믿을 수 있다.)
이것은 선택문제이다
(2) 제조측: 설치 및 ack은 -1 또는 all이다.
ack=0:발송만 담당하여 가장 효율적입니다.
ack=1: 리더가 받을 수 있도록 보장
ack=-1: 리더와 ISR 목록 모두 보장받을 수 있으니 주의 isr 리스트 불가너무 작게 설정했습니다
생산측에서도 비동기적으로 broker에 데이터를 대량으로 보내드립니다.데이터가 손실되지 않도록 설정하려면
동시 전송, Buffer 용량 확장
(3)소비자
소비자 수동 제출 offset
(4)파티션마다 리더와 플로가 있다ower.
생산자가 메시지를 발표할 때 메시지의 키 유무에 따라 다른 분할 전략을 채택한다. 메시지에 키가 없을 때,
폴링 방식을 통한 클라이언트 로드 밸런싱, 메시지 키가 있을 경우 파티션에 따라의미 (예: hash)
같은 키의 메시지가 항상 같은 파티션으로 전송되도록 합니다
(5)리발란스
Rebalance는 본질적으로 C를 규정한 프로토콜입니다.onsumer Group 아래 모든 consumer
Topic에 가입할 각 파티션을 할당하는 방법
트리거 방식:
팀원 수가 변하다.예를 들어 새로운 Consum이 있다er 이 소비자 그룹에 가입하거나조를 이탈하다.
구독의 Topic 개수가 변경됩니다.
Topic에 가입한 파티션의 수가 변경되었습니다.
3. 카프카 소식이 밀리면 어떡해?소비자를 늘리는 것이 도움이 됩니까?
A:한 구역이 많아야 한 소비자가 소비한다.의。
우리는 소비자 중에서 시간을 소모하지 않는 조작만 할 수 있고, 시간이 걸리는 조작은 포함시킬 수 있다2급 대열,
2급 대열은 몇 개의 분구를 더 해야, 이렇게 소비 능력이 따라갈 수 있다.
4. 레디스 여러 마스터가 어떻게 데이터를 균등하게 배분해서 들어가는지, 나오는지기존 부하가 높은 상황
답: 코디스든 레디스든 공식 클러스터는 ha다.sh 알고리즘 계산 key, 짝을 찾는다응수구장
마지막 절점, 즉 마스터를 찾았다.코디스는 10홈 24개
5.레디스의 비트맵에 저장된 키는 무엇인가?왜 redis가 제공한 명령으로 교집합을 구하지 않는가?합집합?
A:(1) 키는 사용자 id를 저장한다.
(2) redis가 제공하는 명령은 cpu의 성능을 매우 소모하며, 자체 과정을 밟는다.순서 조작이 좀 좋다.
6. redis의 분산 잠금장치, 만료 시점은 어떻게 갱신합니까?
답:https://segmentfault.com/a/1190000022436625
(1)redis의 setnx와 set은 모두 단발 re를 대상으로 한다.dis의. 주종이나 집합이라면군레디스
matser가 다운되었을 때, 자물쇠는 아직 slave.slave에 도착하지 않았다.새 마스터일 때, 자물쇠를 채운다.효력을 상실합니다.
(2)redis의 redlock은 분산형 군집 자물쇠로, 총체적이다.아이디어는 모든 노드를 잠그는 것이다.있다
노드의 절반 이상이 잠겼다는 것은 잠금이 성공했다는 것을 의미한다.
(3)zookeeper의 분산 잠금 장치
1) ZooKeeper 분산 잠금장치, 먼저 필요가능한 오래 지속되는 부모 노드 만들기노드
(PERSISTENT 타입), 그리고 각각 획득할 것잠긴 스레드는 모두 이 노드에서 생성한다.세우다
임시 순서 노드.ZK 노드로 인해 생성된 순서대로순차적으로 증가하다.
2) 판단 논리는 번호가 가장 작은 것은 자물쇠로 잠그고 다른 것은 막힘.앞 자물쇠
릴리스 후, 뒤에 있는 노드에 알려드리겠습니다.
3) 재진입성, 동일 스레드에 반복 잠금 가능.
(4) 쥬키퍼와 레디스의 장단점
(1) ZooKeeper에 의한 분산 자물쇠, 적용고신뢰성(고사용가능) 동시접속 불가너무 커요
의 장면;
(2) Redis 기반 분산 잠금 장치, 동시 용량 적용매우 크고 성능 요구가 매우 높은 반면, 그래도신뢰성이 있다
문제는 다른 방안으로 보완할 수 있는 장면이다.
5.취득물 A부문 일면
1.lu 알고리즘의 대략적인 구현, go는 어떻게 lru 알고리즘을 구현합니까
A: 단계는 다음과 같다.
(1) 접속한 데이터가 캐시를 명중할 때 이 수를 세어 볼 수 있다대응하는 노드에 근거해서 그것을 원래부터
위치를 삭제하고 다시 체인 시트의 머리 부분에 삽입합니다. (체인 수정)시계 O(1))
(2) 이 데이터가 캐시된 링크 목록에 없으면 두 개로 나뉩니다.상황:
(3) 캐시 미만이면 이 노드를 직접 삽입합니다.체인 시트의 머리 부분에 삽입한다.
(4)캐시가 가득 차면 체인 끝점까지 이동삭제, 새 데이터 노드
체인 시계의 머리 부분에 꽂습니다.
php: 배열+싱글체인 시계로 구현
golang은:map+구조체 체인 테이블 방식을 채택실현하다
2. mysql의 주불일치는 어떻게 해결하나
답:
(1) 주님이 일치하지 않는 것을 피하는 방법:
1,마스터 라이브러리 binlog는 ROW 형식
2. 마스터-슬레이브 인스턴스 데이터베이스 버전 일치
3. 마스터 라이브러리는 계정 권한을 가지고 통제하며 마스터 라이브러리는 불가합니다.binlog 쓰기 중지하기
4. 라이브러리에서 읽기 전용 read_only=ON, 인위적 기입 불가
5. 정기적으로 주종적합성 검사 실시
(2)해결 방안
1.라이브러리에서 재실현
2.percona-toolkit공 사용보조(최적안)를 갖추다
3. 일치하지 않는 표를 수동으로 재구성한다.
4.다른 스크립트로 일관성 검사를 하고 일치하지 않으면 경찰에 신고한다.
3.go의 프로토콜이 왜 스레드보다 가벼운가
A: 스레드 전환에는 상황, 레지스터, 스택을 전환해야 합니다.등
(1) go 프로토콜은 사용자 상태 스레드, 프로토콜 간이라고도 한다.사용자 상태에서 전환합니다.
사용자 상태에는 시계 중단, 시스템 호출 등의 메커니즘이 없습니다.이것은 효율이 높다.
(2) 프로토콜은 하나의 코드, 하나의 함수 입구로 구성된다.및 스택에 할당된 스택.
일반적으로 2kb, 스레드당 8M의 메모리 사용 가능
4. 카프카는 어떻게 중복소비를 막을까?카프카의 소비ack과 rabbitmq는 어떤가어떻게 구별하는가
A:(1) 전기가 끊기거나 균형이 깨졌을 때 가능성이 있다.소비자들은 아직 offset을 제출하지 않았다.야기하다
중복 소비 문제.일반적으로 업무유일 아이디, 데이터베이스유일한 키 또는 redis 저장소로 지우기애쓴 아이디,
판단 필터링을 한 번 한다.
(2) 하나는 ack 제출 후 데이터 삭제
kafka는 offset 제출 후데이터를 삭제하지 않으면, 데이터는 중복하여 소비할 수 있다.
5.go가 어떻게 자물쇠를 채웠는지
A: (1) 읽기 및 쓰기 잠금 sync.RWMutex 의 RLock( )과 쓰기 잠금 Lock()
(2)상호 배타적 sync.Mutex
(3)atomic 패킷 작동 보증 원자성질
6.항목이 가장 돋보인다고 생각되는 부분을 말씀해주세요.
7.mysql 라이브러리 분할 장면, 어떻게 표까지 조회합니까?
(1) 동일 mysql에서의 다른 라이브러리 join 조사문의하다.
예를 들어 a.demo나 b.d 같은 라이브러리 이름을 지참할 수 있습니다.emo
(2) 서로 다른 mysql에서의 조회
mysql의 federated를 통해 참조할 수 있습니다.옵, 만든 시계는 본지에 표가 있을 뿐이다.의문서
데이터 파일은 원격 데이터베이스에 있습니다
6.샤오미 일면
1. 프레임을 설계하게 해 주십시오. 주요 모듈은 무엇입니까?어떻게 경로를 설계하면 더 효율적일 수 있습니까?
답:
(1) 프레임워크 흐름
엔트리 파일 -> 정의 변수 -> 함수 라이브러리 도입 -> 클래스 자동 로딩 ->프레임 시작
-> 라우팅 해석 -> 컨트롤러 로드 -> 결과 반환
(2)
2.이분목의 비재귀적 전순을 밟다
3. mysql의 undo 로그 원리, 로그 중계 뭐 하는 거야
mysql 픽업 참조
4.nginx와 php의 관계, 하나의 요청으로 php에 어떻게 도착하는지
답:fastcgi 프로토콜을 통해 nginx로 요청, fast를 통해cgi90으로 전송00포트,
php-fpm 9000 포트 수신 후 php 프로그램 처리
5. 체인시계를 반전시키려면 어떻게 해야 하나요?
6.mysql의 myisam의 인덱스 구조는 어떠한가.
MyISAM 엔진은 인덱스 구조로 B+Tree를 사용합니다. 인덱스파일 잎 노드의 data 도메인이 저장된 것은
데이터 레코드의 주소, 데이터 파일의 해당 값을 가리키며 노드당 하나이 인덱스 열의 값이 있습니다.
마이삼의 기본 키 색인과 보조 색인의 구조에는 차이가 없습니다
7.도만면
1.질서 있는 배열에서 어떤 값이 나타나는 횟수를 조회합니다.
인덱스 위치를 2분할로 가져옵니다. 인덱스로부터 두 개의 포인터위치가 좌우로 두루 편력하다.
2.php의 static은 어떤 경우에 쓸까좋은 점은 무엇인가.
A:정적인 것은 다 같은 종류(가방)로 준다.클래스 상수 포함), 정적 이외의 것은 모두 객체용입니다.
(1) 정적인 방법은 직접 분류하여 접근할 수 있다, 인스턴스화할 필요 없음
(2) 함수가 정적 속성의 값을 실행하면계속 있어
3.mysql의 mvcc 구현 원리
undo+틈새 잠금 장치
4. 레디스 리해시 과정, 중간읽기와 쓰기가 있으면 각각 어떻게 처리합니까?전기가 끊겼네?
답:
ht[0], 데이터를 저장하는 table
ht[1], 용량확장이 진행 중인 경우에만사용할 수 있습니다. 또한 데이터를 저장하는 table입니다. 길이는 ht[0]]의 두 배
읽기 동작: ht[0]으로 갑니다찾다 못 찾겠어요. ht[1]에서 다시 찾겠다.
쓰기 작업 수행: ht[1]에 직접 쓰기중。
rehashidx 초기 - 1rehash를 시작하면 0, 매번 rehash를 +1,
rehash 종료 시 -1로 수정
8.b일면
0.아이템 속 포인트 소개
1.go의 인용 유형은 무엇입니까?
답:
값 유형은 각각 다음과 같습니다:iNT 시리즈, 플로트 시리즈,bool, string, 배열, 구조체
참조 유형: 포인터slice 슬라이스, 파이프 channel, 인터페이스 interface, map, 함수 등
값 유형은 다음과 같습니다.변수는 값을 직접 저장합니다. 메모리는 보통입니다.스택 할당
인용 유형의 특징은: 변수는 주소입니다.각각의 주소에 대응하는 공간이야말로 진정한 기억의 값이다.
메모리는 보통 스택에서 나뉜다.배합하다
2.go의 select의default 작용
select 당 중의 기타 조건들은 모두 정확하지 않다준비가 다 되었을 때, `default` 지부는 집행될 것이다.
차단되지 않은 전송을 위해또는 수신, defa 사용 가능ult 가지:
3.go의 defer, 속면에 여러 개의 함수가 있는데, 실행 순서가 무엇입니까?마
A:나중에 함수가 먼저실행하다
defer 특성:
1. 닫다키워드 defer 등록하기호출이 지연되다.
2. 이거return까지 호출하기 얼마 전에 잡혔어요. 그래서 자원 정리를 하는 데 쓸 수 있어요.
3. 많다defer 어구, 선두에 따라,출방식의 집행.
4. defer 문장의 변수, d에 있음efer는 성명을 발표할 때 결정한다.
defer 용도:
1. 닫다파일 닫기 핸들
2. 잠그다자원 방출
3. 수라이브러리 연결 해제
4.고루틴 두 개e,선후 순서는 어떻게 통제합니까?
A:참고:https: // www.cnblogs.com/qingfj/p/14881692.html
두 개의 chan을 통해서nel이 제어하고,
방법 1: ch 하나annel A 값이 있습니다. 실행 중입니다.홀수를 찍다.
그리고 다른 거 줘.채널B 할당량 하나
방법 2: c 읽기hannel B, 짝수 출력
챠를 주다nnel A 할당
주의:방법상 필요for 루프 상태에요.그다음은 끝나면 또 통하죠.Chan을 건너서 막아라.
끝나야 할 때그럴 때 채널한테 C 값을 지정하면 main 마스터 프로토콜이 C를 읽습니다.
5.채널이 닫힘값까지 읽을 수 있을까, 여러 번 읽었을 때무엇을 돌려주나요?
닫힌 ch 하나annel 쓰기는요, 반환값은어떤 스타일?
답:
(1) 찬el이 닫히면 읽을 수 있습니다.데이터를 다 읽을 때까지.
계속하면데이터를 읽어 0(으) 로 값을 가져옵니다.int, 바로 0).
(2)쓰기는 이미 닫았다닫혀있는 chan은 panic
6.go의 동시 모델
참고:https: // segmentfault.com/a/1190000018150987
(1)멀티스레드 공유메모리, 자바/c++ 등언어가 구현되는 게 바로 이겁니다.
(2) CSP 합병모델, go언어 특유의, 통과goroutine과 channel이 만들어주는
Go 언어의 스레드 모드유형:MPG
M은 Mach를 가리킨다.ine, 하나의 M은 직접적으로 하나의 M과 관련되어 있다.커널 스레드. 운영 체제에서 관리합니다.
P는 'pro'를 가리킨다cessor'라는 글을 올려 M소를 대표했다.필요한 컨텍스트 환경은 사용자 수준의 코드 로직을 처리하는 프로세서이기도 하다.
그것은 직함을 담당한다.M과 G의 스케줄링 컨텍스트를 연결한다, 기다릴 것이다.실행 대기 중인 G와 M 도킹.
G는 Goro를 가리킨다utine, 사실은 본질적으로도경량급 스레드호출 스택, 중요한 스케줄 포함
정보, 예채널 등.
P와 M의 수량은 일반적으로cpu와 같은 숫자를 가지고 있다.관。
고루틴ue는 한 줄 안에 있을 것이다. 매번실행이 되면 팝이 하나 나오고 막혔을 때
다른 프로토콜이 호출됩니다.전환을 할 수 있습니다.
이점:
1) 지출작음, 일반 스레드보다 작음
2)스케줄링성능이 좋으면 go가 gor를 제어할 수 있다outinue 스케줄
단점: 프로토콜 스케줄러제도는 공평한 배분을 실현할 수 없다.
7.go의 버퍼 찬nel과 단일 channel 뭐가 달라
버퍼 없음: c 방향h1에 값을 저장한 후 다른 프로토콜이 필요합니다.값, 그렇지 않으면 계속 막힙니다.
버퍼링 있음: 차단되지 않음플러그, 버퍼 사이즈가 1이니까두 번째 값을 넣을 때,
첫 번째는 아직 안 잡혔어요가야만 막힌다
9.득물 A부문 이면
--- php
1.php는 어떻게 상주 프로세스를 구현하고, 어떻게 배치하고, 어떻게 모니터링하는지
왜 상주합니까?상주하면서 무슨 좋은 점이 있나
A.pcntl 확장과 posix 확장을 통해 구현한다.참고: https://ww.jianshu.com/p/161d9981112a
만들기 단계:
1.자 프로세스 만들기, 부모 프로세스 종료 (부모 프로세스 터미널에서 벗어나기)
2.자 프로세스에서 새 세션 만들기 (posix_setsi)d() 방법)
3.작업 디렉토리 변경 (chdir('/'))
4.파일 생성 마스크 리셋 (umask(0)
5.파일 설명자 닫기 (주로 상위 프로세스 닫기)파일 등)
백그라운드에서 계속 미션을 처리할 수 있다는 게 장점이다.자주 사용하는 관리 도구는:S입니다.유퍼바이저
2.php 메모리 유출의 조사 및 처리
원인: (1) 큰 메모리 변수가 해제되지 않았습니다.
(2) 자신을 순환적으로 인용하다
(3) php-fpm은 캐시가 자주 삭제될 때 신문을 컴파일한다.틀리다.
검색: 코드 보기, 메모리 최대 보기, x-debug 보기 프로그램성능손실
--골랑
1.골랑의 버퍼 채널, 업무를 전환할 때 어떻게 처리하나요?
A:모르겠어요.
2.golang의 context의 withcancel은 써봤나,뭐어떤 장면
(1) goroutinue 닫기
(2)아버지의 context가 닫힌 후 그의 아들 context가 닫히기도 하고
1. WithCancel() 함수는 Contex를 사용합니다t 그리고 하위 Context와 취소함카운셀을 세다
2. 프로토콜에서 들어오는 하위 Context를 인수로 새로 만들고 하위 모니터링이 필요합니다.Context의 Done 채널,
만약 소식을 받으면, 퇴출한다
3. 새로운 프로토콜이 필요할 때 밖에서 cancel 함수를 호출합니다.서브콘텍스트에 있는 돈 채널로 바로 가겠습니다
메시지 보내기
4. 참고: 부모 Context의 Done( ) 은( 는) 꺼졌습니다.경우, 하위 ctx의 Done( ) 닫히기도 하고
3.goroutinue의 변수역할 문제,
루프에서 goroutinue 수정 변경량을 호출하면 전달되는 변수가 변경됩니다.바뀝니까? 최적화 방법
A: 루프에서 goroutinue를 호출하고 프로토콜에서 val을 출력합니다.ue:밸류가 마지막 원을 가리키고 있을 가능성이 높다소박하다.
솔루션:(1) value가 goroutin에 파라미터로 전달됨ue
(2) 루프에 변수 새로 만들기
4. golang이 goroutinue를 어떻게 스케줄 하는지: a: 개념 보기
5.golang의 switch와 php의 switch의 차이
(1) go에 디폴트 break을 넣어 대응 case에 매칭하고,해당 코드를 실행한 후에 전체 코드를 종료합니다.
스위치 블록
(2) go에서 fallthrough 키워드로 후속 점수를 계속 수행한다.지출 코드
--- 미들웨어
1. 카푸카 10개 분구, 한 소비자, 골랑에서 몇 개의 협의서를 작성한다.
A: 단일 스레드일 수도 있고 여러 스레드일 수도 있습니다.멀티 스레드면 스레드 아니에요안전한
주의할 점이 있다
2. kafka의 offset은 어디에 있는가?
A: Kafka 버전[0.10.1.1], 기본적으로 소비됩니다. offset 이입했습니다
Kafka 이름 __consumer_offsets의 Topic에서.
원리: Kafka 자체 Topic을 이용하여 소비하는 Group, Topic 그리고 Partit이온이 그룹으로
키.모든 소비 offset은 위의 Top에 기입한다ic중. 이 부분 소식들이 굉장히 중요하기 때문에
데이터를 잃어버리는 것을 용납할 수 없기 때문에 메시지의 acking 레벨이 -1로 설정됨
생산자는 모든 ISR이 메시지를 받은 후에야 ack을 받을 수 있습니다.(데이터 보안성이 매우 우수함, 물론,
그 속도에 영향을 줄 수 있다).그래서 카프카가 또 메모리에서 유지보수를 했어요그룹, Topic, 그리고
Partition의 3원 그룹이 최신 offse를 유지합니다.t 정보, 소비자가 최신 offse를 획득하다t 때
메모리에서 바로 가져옵니다.
(2) kafka의 position
consumer에서 offse를 제어할 수 있다는 것을 모두 알고 있습니다.t,그래서 소비를 억제할 수 있다,사실 offset
재가동할 때만 사용한다.기계가 정상적으로 동작할 때 우리는 p를 사용한다.osition,
저희가 실시간으로 소비하는 포지션도 off가 아니라 포지션이에요set.
3.rabbitmq의 ack과 kafka의 ack의 차이점은?
rabbitmq: 데이터 처리 후 ack 전송, mq 안심데이터를 삭제했습니다.
소비자가 비정상적으로 종료할 때 ack을 보내지 않을 때 이 메시지를 보냅니다소비자 한 사람이라도 잃지 않을 것을 보증한다.
kafka의 ack 메커니즘은 바로 생산자의 ack을 의미한다.
4. mysql 라이브러리 테이블, 각 테이블의 id는 1부터 시작하나, 왜 설치해야 하는가
일반적으로 전역 분산 id를 설정합니다. 주요 방법은 다음과 같습니다.
(1) redis 글로벌 id 하부 방어, 다운 위험
(2) 심플 세그먼트 모드, 예를 들어 long 타입, 1억부터 시작체증
(3) 눈꽃 알고리즘의 송신기, 바이두의 바이두 uid-generator, 메이플의 ecp-uid
5.kafka가 모든 메시지를 지정된 파티션에 배포하도록 보장하는 방법
(1) 같은 key 설정, kafka는 hash(key)%numPartitions, 동일한키
동일한 파티션으로 전송 가능
(2) 생산자는 connection=1을 설정하고, 이 파라미터는 생을 지정한다.생산자는 서버의 응답을 받기 전에
몇 개의 메시지를 보냅니다.
(3) 구획의 경우, 구획이 가장 좋으며 기입 순서를 보증한다.
(4) Producer의 멱등성을 위해 Kafka는 P를 도입했다.roducer ID(즉, PID)와 Sequence Number
각 생산자 Commit이 메시지를 보낼 때마다 해당 번호를 인크리먼트 한다
--- 아키텍처 레벨
1.업무 전반에 걸친 아키텍처에 대해 대략적인 설명, 서비스 간 통신 방식, 정보 흐름 처리
2.k8s의 요청은 어떻게 내부 실제 ip로 전달되나요?서비스 간의 통신은요?
답:
(1) Service는 모든 Pod를 하나의 그룹으로 통일하는 것이다.후 대외적으로 고정 IP를 제공한다.
(2) service ip, k8s의 kube에 접속합니다.proxy는 자동으로 백엔드 8개의 p를 균등하게 로드합니다od
이 서비스 클러스터 내부 액세스에는 서비스 ip 하나만 필요합니다. 포트 번호를 붙이면 돼요
(3) 엑스트라넷 액세스: 각 Node에 랜덤 포트 열기 및 각Node의 단자는 모두 동일합니다.
<NodeIP>:NodePort 방식으로 Kubernetes 클러스터 외부에 있는 프로그램은 Ser에 액세스할 수 있습니다.vice.
service에 접속하면 자연스럽게 p도 찾을 수 있다.od가 서비스를 제공했다.
(4) ClusterIP: 클러스터 내부의 가상 IP를 제공합니다.Pod와 같은 세그먼트가 아닙니다.
클러스터 내부의 pod간 통신에 사용할 수 있도록 한다.
(5) 생산환경 하에서의 외부 접속:
Ingress는 클러스터 내의 서비스를 외부 네트워크로 설정할 수 있습니다접근 가능한 URL, 트래픽 부하 균형,
SSL 종료, 도메인 기반 액세스 가상 호스트 제공 등.
1) Nginx 역방향 에이전트 로드 밸런서
2) Ingress Controller
Ingress Controller는 이렇게 보면컨트롤러, 쿠버른을 따라다니며etes API
대화형, 백엔드 서비스, Pod 등 실시간 가져오기변화, 예를 들어 신규, 삭제 등
Ingress 정의 규칙과 함께 설정을 생성합니다.위에 있는 Nginx를 동적으로 업데이트하십시오.
부하 분산기, 서비스 자동 전송을 위해 설정을 새로 고칩니다.현재의 역할.
3) Ingress
Ingress는 규칙을 정의합니다. 도메인 이름을 정의합니다.요청하신 것을 클러스터에 지정한 것으로 전달합니다.
서비스.Yaml 파일로 정의할 수 있습니다하나 이상의 서비스를 제공할 수 있습니다. 하나 정의
하나 이상의 Ingress 규칙입니다.
3. 서비스 제한은 어떻게 하나요?서비스 퓨즈는 어떻게 합니까?
흐름 제한: (1) 코드의 큐 수
redis-cell은 rust 언어로 작성된 토큰 버킷 기반입니다.알고리즘의 전류 제한 모듈,
원자적인 한류 기능을 제공하고 돌발 유량을 허용하여 편리하게 응용할 수 있다분산 환경
(2) 게이트웨이 전류 제한
nginx가 가져온 ngx_http_limit_req_module 모듈은 요청을 제한합니다.흐르다
즉, 일정 기간 동안 사용자의 요청 속도를 제한하며, 버그를 사용합니다.계산법
퓨즈: 퓨즈: php로 슬라이딩 창 수를 늘립니다.
슬라이딩 윈도우 알고리즘의 전류 제한은 가장 적합한 수요 장면으로, 바로 X초 이내, 최대입니다.Y 요청 허용
10.도소만2면
1.많은 원소들 중에서 가장 큰 n개수를 구한다(분치, 오버헤드)
1) 분할 + 오버헤드 정렬
2) 작은 탑 더미, 그리고 두루 다니며, 매번 작은 탑 더미의 원소와 함께 한다.비교하자면, 작은 폐기.
크면 이 큰 원소를 쌓으면 된다최종 결과는 덤프다.
2.k번째 큰 원소 찾기
2.golang의 with group
Add(Add(): 매번 완료되기를 기다리는 gor를 활성화합니다.outine 전에 Add를 불러옵니다.() 을( 를) 설정하거나 추가할 때 사용합니다.
완료될 때까지 기다릴 goroutine 수
예를 들어 Add(2)나 Add(1)를 두 번 호출하면 다 설정해버리는 등대기 카운터의 값이 2가 되면 2를 기다려야 함을 나타냅니다.고루틴
완성하다.
Done(Done(): 매번 기다려야 하는 goroutine가 실제로 완성되기 전에, 그것을 불러야 한다.방법이 사람을 만든다
goroutine이 완성되었음을 나타냅니다.법회는 대기 카운터에서 1을 감산한다.
Wait(): 카운터가 0으로 줄어들 때까지 기다립니다.it() 는 현재 gor 를 계속 차단합니다.아우딘
3. mysql 트랜잭션은 어떻게 향상 속도를 최적화합니까?
A: 자물쇠의 조립도를 줄이고 자물쇠의 보유 시간을 줄임으로써 조절한다.우수하다
(1) 업무 시나리오와 연계하여 하위 등급의 사무 격리를 사용
(2) sql 최적화 행록 업그레이드 방지 표록
(3) 갱신 등 행쇄 조작은 업무 뒤에 두고 최소화한다.자물쇠가 있는 시간.
예를 들어 우리가 먼저 주문을 만들고, 로직을 수행하고, 마지막으로재고품을 차감하다.
4.홍흑목과 이분목의 차이, 왜 성능이 이분목보다 좋습니까?
적흑목은 균형잡힌 이분지 찾기 나무다.얘는 일반 2차사를 풀기 위해서트리를 찾아 데이터가 갱신되는 과정에서
복잡도가 퇴화된 문제에서 비롯된다.빨간색과 검은색 트리 높이 약 log2n, 그래서 거의 평형이다.
삽입, 삭제, 찾기 작업의 시간 복잡도 O(logn))。
AVL 트리는 매우 균형 잡힌 이분목이기 때문에 찾는 것이 효율적이지 않습니다.늘 높은데 좋은 게 있으면 나쁜 게 있다.
AVL 나무는 이런 고도의 균형을 유지하기 위해 더 많은 세대를 바쳐야 합니다.가격. 삽입,삭제시마다 조정하여야 하며,
좀 복잡하고 시간이 많이 걸려서
AVL 트리는 보다 안정적인 조회 성능을 자랑하며 업데이트가 잦으면 레드 블랙 트리더 좋다.
(1) 적흑목의 조회 성능이 AVL목에 비해 약간 떨어진다.avl 나무는 약간 언밸런스하게 한 층까지 올라오는데,
레드 블랙 트리의 조회 성능이 같은 내용의 av에 불과하다는 뜻이다.l나무는 많아야 한 번 더 비교한다.
(2) 레드 블랙 트리 삽입 및 삭제 완료 avl 트리, avl 트리매번 삽입 삭제 시 많은 평형도를 수행한다계산하다.
적흑목의 적흑색성 유지를 위한 적흑색 변환과회전 오버헤드는 에이블 트리보다유지하다.
균형 잡힌 지출은 훨씬 적다.
5.어떤 경우 rabbitmq, 어떤 경우 kafka는요
답:
(1) 스루풋이 높을 때 kafka로
(2) 저지연이 필요한 경우 rabbitmq를 이용한다.
(3) 부분연장 큐용 rabbitmq
11.반어일면
1.체인시계는 next와 random이 있으며, 딥카피(ok)
2.행렬 안에 1과 0, 1은 섬을 나타내며, 모든 섬의 수(깊이)를 구한다.검색)
3.이분목의 중간순서순서순서순서순서순서순서순회, 반복방식
1) 루트 노드 스택, 왼쪽 노드 스택
2) 왼쪽 노드가 null, 출고, 출력값까지
3) 오른쪽 노드 스택
4.php rabbitmq와 kafka를 연결하는 방법
(1) rabbitmq
1) php 다운로드 amqp 확장, 안에 있는 것도 rabbitmq 확장 파일
2) php는 amqp를 통해 mq에 접속하고 그 후호출 전송 가능
(2) kafka
1) librdkafka 확장 설치
2) broker를 연결하여 생산자를 초기화하면 된다
12.일면식
1.M 배열의 병합
몇 개의 순서 부분 배열이 있습니다. 병합정렬된 배열입니다.부분 배열의 평균 길이는 M이고 부분 배열의 평균 길이는 N입니다
2.LRU 캐시
일반 put과 ge 지원t 기능, 길이 제한 1k. 캐시 시간 만료 정책은 고려하지 않습니다.
1) 배열별 저장노드, key=> 노드 조회 시 key가 배열되어 있지 않다고 판단한다
2) 배열 요정에 주의의미길이의 경우, 길이를 초과하면 끝값 삭제
3) put 때배열이 꽉 차면 새 노드가 생성되도록 주의한다.
그리고 체인 머리글에 꽂아서부
3.go의 new와 make의 구별
(1) 내장함수 new 손가락 누르기유형 길이로 제로 메모리 할당, 포인터 반환, 유형 내부 구성 및 관심 없음
초기화자식 (int, float, bool, string 모두 값 유형입니다)
(2) 함수 make 쌍 내장타입을 참조해서 작성하면 컴파일러는 make를 타겟 타입 전용 작성 함수로 변환합니다.
확실히 모든 것을 완성할 수 있도록 하다저장 할당과 관련 속성을 초기화합니다.
(참조 유형: slice,map,channel)
(3) 두 함수 모두 메모리분배하다
13.샤오미 2면
1억 1400만 개수의 순위를 매겨 1억 번째 개수는 얼마인가
2.만약 당신이 틀을 짜라고 한다면 DB류는 어떻게 실현될 것인가?
conn()
query()
3. sql로 과목당 평균점수와 최대점을 구한다.
select b. 코스명, avg(a. 점수) as 평균 성적, max(a. 점수) as 최고 성적
min(a. 점수) as 최저 성적
from 성적표 a, 과정표 b
where a. 코스 번호=b. 코스 번호
group by b. 과정 이름
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php에서 python으로 첫날 (0) | 2022.07.21 |
---|---|
php코드 최적화 및 개발의 팁 (0) | 2022.07.21 |
php 엑셀 파일 demo 읽기 및 python과의 성능 비교 (0) | 2022.07.21 |
PHP의 CI 프레임워크 학습 (0) | 2022.07.21 |
php 프로그램 메모리 최적화 배열 동작 최적화 (0) | 2022.07.20 |