'2019 샤오미 봄 상하이 PHP 인턴 채용 면접 질문'에 대한 답변 분석

藏色散人
풀어 주다: 2023-04-07 22:40:02
앞으로
6863명이 탐색했습니다.

관련 추천: "2019 PHP 면접 질문 요약(모음) "

1 丶Nginx How to 로드 밸런싱 달성

이것은 비교적 간단합니다

1. 폴링

이런 종류입니다. 각 요청을 순서대로 다른 서버에 하나씩 할당하는 기본 전략입니다. 서버가 중단되면 자동으로 제거될 수 있습니다.

upstream  fengzp.com {   
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}
로그인 후 복사

2. 최소 연결

연결 수가 가장 적은 서버에 요청 할당

upstream  fengzp.com {   
    least_conn;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}
로그인 후 복사

# 🎜🎜 #3. 가중치

가중치를 사용하여 서버 액세스 비율을 지정합니다. 기본 가중치는 1입니다. 다음 구성은 server2의 접속 비율을 server1의 두 배로 만듭니다.

upstream  fengzp.com {   
    server   192.168.99.100:42000 weight=1; 
    server   192.168.99.100:42001 weight=2;  
}
로그인 후 복사

4.ip_hash

각 요청은 접속 IP의 해시 값에 따라 할당되므로, 동일한 클라이언트가 처리를 위해 동일한 서버에 배포하면 세션 문제를 해결할 수 있습니다. 서버가 중단되면 자동으로 제거될 수 있습니다.

upstream  fengzp.com {   
    ip_hash;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}
로그인 후 복사
ip_hash는 가중치와 함께 사용할 수 있습니다.

2 丶Linux에서 일반적으로 사용되는 명령

참고 기사:

https://www.php.cn/linux-415502 .html

3 丶WeChat 미니 프로그램에서 일반적으로 사용되는 구성 요소

view 丶text 丶button 丶navigator 丶scroll-view . ..... 잠깐

4 Nginx 가상 호스트 구성 방법

참고 기사:

https://www .php.cn/php-weizijiaocheng-387454.html

5 TP5와 Laravel 프레임워크의 차이점

참조 기사:

https://www.php.cn/phpkj/thinkphp/422769.html

6 丶TP5 및 Laravel 프레임워크에서 데이터 마이그레이션#🎜🎜 # 참고 기사:

https://www.php.cn/js-tutorial-386843.html

# 🎜 🎜#https://www.php.cn/phpkj/laravel/414216.html

7 丶RBAC 모델 설명

# 🎜🎜#

RBAC란RBAC(Role-Based Access Control): 영어 이름은 Rose base Access Controller입니다. 이 블로그에서는 이 모델의 권한 시스템 설계를 소개합니다. 사용자와 권한 간의 직접적인 연결이 취소되고, 사용자 관련 역할 및 역할 관련 권한 방법을 통해 사용자 권한이 간접적으로 부여됩니다. 이로써 디커플링이 달성됩니다. RBAC는 개발 과정에서 다음과 같은 버전으로 나누어집니다. RBAC0, RBAC1, RBAC2, RBAC3.

8 丶주문 모듈 과정

9 丶주문 결제 성공 후 작업

10 丶 이메일 활성화 연결 만료 시간 설정

데이터베이스에 활성화 코드를 쓸 때 타임스탬프 + 만료 시간 쓰기 # 🎜🎜##🎜 🎜#11 Redis와 Mongodb의 차이점

1. 성능

은 상대적으로 높고 성능도 상대적으로 높아서 병목 현상이 발생해서는 안 됩니다.

일반적으로 Redis와 Memcache는 TPS 측면에서 유사합니다.

2. 작업 편의성

redis는 2.0 버전 이후 자체 VM 기능을 추가하여 물리적 메모리의 한계를 뛰어넘었습니다. 키 값은 만료 시간을 설정합니다(memcache와 유사).

mongoDB는 대용량 데이터를 저장하는 데 적합합니다. 메모리 관리를 운영 체제 VM에 ​​의존하며 많은 메모리를 소비합니다. 이 서비스는 다른 서비스와 결합되어서는 안 됩니다.

4. 가용성(단일 포인트 문제)

단일 포인트 문제의 경우:

redis에 의존 클라이언트 마스터-슬레이브 복제 중에 분산 읽기 및 쓰기를 수행하려면 슬레이브 노드가 마스터 노드에 다시 연결할 때마다 전체 스냅샷에 의존해야 합니다. 성능 및 효율성 문제로 인해 단일 지점 문제가 발생하지 않습니다. 더 복잡합니다. 자동 샤딩은 지원되지 않으며 일관된 해시 메커니즘을 설정하려면 프로그램에 의존해야 합니다. 대안은 Redis의 자체 복제 메커니즘을 사용하고 직접 활성 복제(다중 스토리지)를 사용하거나 증분 복제(직접 구현해야 함)로 변경하는 것입니다. 일관성 문제 및 성능 절충. .

mongoDB는 마스터-슬레이브, 복제 세트(내부적으로 paxos 선택 알고리즘 사용, 자동 오류 복구), 자동 샤딩 메커니즘을 지원하고 클라이언트로부터 장애 조치 및 샤딩 메커니즘을 보호합니다.

5. 신뢰성(지속성)

Redis는 데이터 지속성 및 데이터 복구를 지원합니다(스냅샷, AOF): 지속성을 위해 스냅샷에 의존 aof는 안정성을 향상시키지만 성능에 영향을 미칩니다. MongoDB는 지속성 안정성을 지원하기 위해 버전 1.8부터 binlog 모드를 채택했습니다.

6. 데이터 일관성(트랜잭션 지원)

redis 트랜잭션 지원은 상대적으로 약하며 각 작업의 지속적인 실행만 보장할 수 있습니다. transaction , mongoDB는 트랜잭션을 지원하지 않습니다.

7. 애플리케이션 시나리오

redis: 더 적은 양의 데이터로 더 많은 성능 작업 및 계산

MongoDB: 주로 대용량 데이터의 액세스 효율성 문제를 해결합니다

12 丶redis와 memcached의 차이점

참고 기사: https://www.php.cn/mysql-tutorials-410551.html

13丶 Redis의 대기열

Redis 대기열을 구현하는 방법에는 두 가지가 있습니다:

1.

일반 버전:

예를 들어 대기열에서 생산자 A가 데이터를 여기에 푸시하고 소비자 B가 데이터를 팝하지만 대기열은 여전히 ​​비어 있습니다. 그래서 그것은 일대일입니다.

선입선출인지 선입선출인지 등에 대해서는 lpush(큐의 왼쪽, 즉 큐의 선두에서 데이터 하나 푸시) rpush(push) 함수를 따를 수 있습니다. 큐의 오른쪽에서 하나의 데이터, 즉 큐의 꼬리) lpop(동일 원리) rpop 등을 제어합니다.

차단 버전:

하지만 위 명령은 데이터 유무에 관계없이 즉시 반환됩니다. 데이터를 가져오는 향상된 버전의 lpop, blpop(block left pop) 차단 버전,

사용법: blpop key1 key2 ... . keyn 10

여러 키의 값을 동시에 미리 가져오고 시간 제한을 10초로 설정합니다. 모든 키 또는 일부 키에 값이 있으면 즉시 반환됩니다. 2. 구독자 모델을 해제합니다.

개념:

세 명의 사용자 A, B, C가 모두 동시에 msg라는 채널을 구독합니다. 그러면 게시자가 msg 채널에 데이터를 게시하면 세 명의 사용자 A, B, C가 모두 구독하게 됩니다. 데이터를 받으세요.

참고:

물론 ABC 사용자 3명을 차단해야 합니다. 구독된 데이터를 수신하는 방법은 redis에 등록된 콜백 함수에 의존해야 합니다.

공개된 데이터는 Redis에서 복제되지 않습니다. 즉, 공개된 후 여러 가지 이유로 A, B, C가 이를 받지 못했다는 의미입니다.

14 丶redis의 데이터 유형

Redis는 문자열(string), 해시(hash), 목록(list), 집합(set) 및 zset(sorted set: 순서 집합)의 다섯 가지 데이터 유형을 지원합니다.

15 ​​​​丶TP 프레임워크의 이벤트

16 丶TP 프레임워크의 종속성 주입

은 Laravel

17과 다르지 않습니다. 丶MySQL의 읽기-쓰기 분리 작업

참조 기사: https:// www.php.cn/mysql-tutorials-360278.html

18 丶 데이터베이스 varchar와 char의 차이점

varchar는 사용되지 않은 공간을 회수합니다

19 丶MyIsam과 InnoDB의 차이점

1. MyISAM: 기존 ISAM 유형을 기반으로 하는 기본 테이블 유형입니다. ISAM은 Indexed Sequential Access Method(인덱스 순차 액세스 방법)의 약어로, 레코드 및 파일을 저장하는 표준 방법입니다. 트랜잭션이 안전하지 않으며 외래 키를 지원하지 않습니다. 많은 수의 선택을 실행하는 경우 MyISAM을 삽입하는 것이 더 적합합니다.

2. InnoDB: 트랜잭션 보안을 지원하는 엔진으로, 외래 키, 행 잠금 및 트랜잭션을 지원하는 것이 가장 큰 특징입니다. 업데이트 및 삽입 수가 많은 경우 특히 다중 동시성 및 QPS가 높은 상황에서는 InnoDB를 사용하는 것이 좋습니다.

1. 테이블 잠금 차이점

MyISAM:

myisam은 테이블 수준 잠금만 지원합니다. 잠금 후 잠김, 테이블이 삽입 동시성을 충족하면 테이블 끝에 새 데이터를 삽입할 수 있습니다. lock table 명령을 통해 테이블을 잠글 수도 있습니다. 이 작업은 주로 트랜잭션을 시뮬레이션할 수 있지만 비용이 많이 들고 일반적으로 실험적 데모에만 사용됩니다.

InnoDB:

Innodb는 innodb의 가장 큰 기능인 트랜잭션 및 행 수준 잠금을 지원합니다.

트랜잭션의 ACID 속성: 원자성, 일관성, 격리성, 내구성.

동시 트랜잭션으로 인해 발생하는 여러 가지 문제: 업데이트 손실, 더티 읽기, 반복 불가능한 읽기, 팬텀 읽기.

2. 데이터베이스 파일의 차이점

MyISAM:

myisam은 힙 테이블에 속합니다.

myisam은 디스크 저장소에 세 개의 파일이 있으며, 확장자는 파일 유형을 나타냅니다. .

.frm은 테이블 정의를 저장하는 데 사용됩니다.

.MYD는 데이터를 저장하는 데 사용됩니다.

.MYI는 테이블 인덱스를 저장하는 데 사용됩니다.

myisam 테이블은 세 가지 다른 저장 형식도 지원합니다.

정적 테이블(기본값이지만 주의하세요) 데이터 끝에 공백이 있으면 제거됩니다), 동적 테이블, 압축 테이블.

InnoDB:

innodb는 인덱스 구성 테이블입니다.

innodb에는 공유 테이블 공간 저장소와 다중 테이블 공간 저장소라는 두 가지 저장 방법이 있습니다.

두 가지 저장 방법의 테이블 구조는 myisam과 동일합니다. 테이블 이름과 확장 이름은 .frm입니다.

공유 테이블스페이스를 사용하면 모든 테이블의 데이터 파일과 인덱스 파일이 하나의 테이블스페이스에 저장됩니다. 공유 테이블스페이스의 위치와 이름은 innodb_data_file_path를 통해 설정됩니다. innodb_data_home_dir 매개변수는 일반적으로 공유됩니다. 테이블스페이스의 이름은 ibdata1-n입니다.

여러 테이블스페이스를 사용하는 경우 각 테이블에는 각 테이블의 데이터와 인덱스를 저장하는 테이블스페이스 파일이 있습니다. 파일 이름은 테이블 이름으로 시작하고 확장자는 .ibd입니다.

3. 인덱스 차이

1. 자동 성장에 대하여

마이삼 엔진의 자동 성장 열은 반드시 인덱스여야 하며, 자동 성장이 첫 번째 열일 필요는 없습니다. 나중에 이전 열의 증분에 따라 정렬할 수 있습니다.

innodb 엔진의 자동 성장은 인덱스여야 합니다. 복합 인덱스인 경우 복합 인덱스의 첫 번째 열이기도 해야 합니다.

2. 기본 키 관련

myisam은 인덱스와 기본 키가 없는 테이블이 존재할 수 있도록 허용합니다.

myisam의 인덱스는 모두 저장된 행의 주소입니다.

innodb 엔진이 기본 키나 비어 있지 않은 고유 인덱스를 설정하지 않으면 자동으로 6바이트 기본 키가 생성됩니다(사용자에게 표시되지 않음).

Innodb 데이터는 기본 인덱스의 일부이며 추가 인덱스는 기본 인덱스의 값을 저장합니다.

3. count() 함수에 대해

myisam은 테이블의 총 행 수를 저장합니다. 테이블에서 count(*)를 선택하면 값이 직접 저장되지 않습니다. 테이블의 총 행 수. select count(*) from table;을 사용하면 전체 테이블을 탐색하므로 많은 비용이 소모되지만 where 조건을 추가한 후에는 myisam과 innodb가 이를 동일한 방식으로 처리합니다.

4.myisam은 FULLTEXT 유형의 전체 텍스트 인덱스를 지원합니다

innodb는 FULLTEXT 유형의 전체 텍스트 인덱스를 지원하지 않지만(5.6부터 지원됨) innodb는 스핑크스 플러그인을 사용할 수 있습니다. 전체 텍스트 인덱싱을 지원하면 효과가 더 좋습니다. (스핑크스는 여러 언어로 API 인터페이스를 제공하고 다양한 mysql 쿼리를 최적화할 수 있는 오픈 소스 소프트웨어입니다.)

5.delete from table

이 명령을 사용하면 innodb는 테이블을 다시 생성하지 않고 데이터를 하나씩 삭제합니다. 이 주문을 사용하지 않는 것이 가장 좋습니다. (truncate table을 사용하는 것이 좋지만, 이 테이블을 drop하려면 사용자에게 권한이 있어야 합니다.)

6. 인덱스 저장 위치

myisam의 인덱스는 테이블 이름 + .MYI 파일에 별도로 저장됩니다.

Innodb 인덱스와 데이터는 테이블스페이스에 함께 저장됩니다.

20 丶 MySQL에는 여러 종류의 인덱스가 있습니다.

1. 일반 인덱스

가장 기본적인 인덱스는 쿼리 속도만 향상시킵니다.

2. 고유 인덱스

는 일반 인덱스와 유사합니다. 인덱스의 열 값은 고유해야 하지만, null 값이 허용됩니다. 즉, 결합 인덱스인 경우입니다. , 열 값의 조합은 고유해야 합니다.

3. 기본 키 인덱스

는 우리가 흔히 사용하는 기본 키 ID로 null 값을 허용하지 않는 특수한 고유 인덱스입니다. 일반적으로 기본 키 인덱스는 테이블 생성과 동시에 생성됩니다.

특징:

1) 테이블에는 기본 키 인덱스가 하나만 있습니다.

2) 기본 키는 증가해야 합니다.

4. 결합 인덱스

는 여러 필드로 구성된 인덱스입니다.

5. 전체 텍스트 인덱스

fulltext

myisam 엔진 지원

6. 외래 키

외래 키 설정 시 주의 사항:

1) 테이블 엔진은 동일해야 합니다

2) 필드 유형은 다음과 같습니다. 동일해야 합니다

3) 길이가 동일해야 합니다

4 ) 저장 범위가 동일해야 합니다

5) 제약 조건 필드가 참조 필드에 나타나야 합니다

위 내용은 '2019 샤오미 봄 상하이 PHP 인턴 채용 면접 질문'에 대한 답변 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!