이 글은 참고할만한 가치가 있는 PHP에 관한 인터뷰 요약을 소개합니다. 이제 도움이 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
PHP 기사에는 몇 가지 일반적인 기본 및 고급 인터뷰 질문이 수집되어 있습니다.
### 기본
- Get과 POST의 차이점
- 작은따옴표와 큰따옴표의 차이점
- isset과 공백의 차이점
- echo, print_r, print, var_dump의 차이점
- MVC란 무엇입니까? ?
- 값 전달과 참조 전달의 차이점은 무엇인가요?
- 쿠키와 세션의 차이점과 관계
> 1. 쿠키는 클라이언트(브라우저)에 있고 세션은 서버 측에 있습니다
> 2. 쿠키보다 세션이 더 안전합니다
> 단일 쿠키로 4K를 초과할 수 없습니다
> 4. 세션은 쿠키를 기반으로 합니다. 브라우저가 쿠키를 비활성화하면 세션도 유효하지 않습니다(그러나 URL에 세션 ID를 전달하는 등 다른 방법으로 달성할 수 있음)
### 고급 기사
- S.O.L.I.D 디자인 원칙에 대한 간략한 설명
- | -
--- | --- | ---
SRP | 클래스에는 단 하나의 변화 이유가 있습니다.
OCP | 클래스를 확장하는 동안 동작 변경
LSP | Liskov 대체 원칙 | 파생 클래스는
ISP | 인터페이스 격리 원칙 사용
DIP | 반전 원리 | 구체성보다는 추상화에 의존 구현
- PHP7과 PHP5의 차이점은 무엇입니까?
> 1. 성능이 2배 향상되었습니다
> 2. 결합 비교 연산자(<=>) 추가
> 3. 스칼라 유형 선언 및 반환 유형 선언 추가 4. `try ... catch`는 다중 조건 판단을 추가하고 예외로 더 많은 오류 오류를 처리할 수 있습니다.
> "사용 후 연소"되는 일부 완전한 클래스 정의를 대체하는 데 사용됩니다
- PHP5에 비해 PHP7의 성능이 향상된 이유는 무엇입니까?
> 1. 가변 저장 바이트가 줄어들어 메모리 사용량이 줄어들고 가변 작업 속도가 향상됩니다.
> 2. 배열 구조가 개선되어 배열 요소와 해시 매핑 테이블이 동일한 메모리에 할당됩니다. 메모리 사용량 감소 및 변수 연산 속도 향상
> 3. 함수 호출 메커니즘 개선, 매개변수 전송 프로세스 최적화로 일부 명령 감소 및 실행 효율성 향상
- PHP 가비지에 대해 간략하게 설명합니다. 수집 메커니즘(GC)
> PHP 버전 5.3 이전에는 참조 카운트를 사용하여 메모리를 관리했습니다. PHP의 모든 변수는 `zval`이라는 변수 컨테이너에 저장됩니다. .변수 참조 횟수가 0이 되면 PHP는 이 변수를 메모리에서 소멸시킵니다.
>
> 그러나 참조 카운트의 순환 참조의 경우 참조 카운트가 0으로 줄어들지 않아 메모리 누수가 발생합니다.
>
> 버전 5.3 이후에는 다음과 같이 최적화되었습니다.
>
> 1. 참조 횟수가 줄어들 때마다 재활용 주기가 시작되지 않습니다.
> ; 2. 순환 참조 문제를 해결할 수 있습니다.
> 3. 항상 메모리 누수를 임계값 이하로 유지할 수 있습니다.
자세한 내용은 PHP 매뉴얼, [가비지 수집 메커니즘](http://docs.php.net/manual/zh/features.gc.performance-considerations.php)을 참조하세요.
- PHP 메모리 오버플로 문제를 해결하는 방법
> 1. PHP 스크립트의 메모리 할당을 늘리세요
> 2. 시간 내에 변수 참조를 삭제합니다
> 3. 데이터를 일괄 처리합니다
- Redis Memecached와 차이점은 무엇인가요?
> 1. Redis는 문자열, 해시, 목록, 집합 및 정렬 집합 등 더욱 풍부한 데이터 저장 유형을 지원합니다. Memcached는 단순한 키-값 구조만 지원합니다.
> 2. Memcached 키-값 저장은 키-값 저장에 해시 구조를 사용하는 Redis보다 메모리 활용도가 더 높습니다.
> 3. Redis는 일련의 명령의 원자성을 보장할 수 있는 트랜잭션 기능을 제공합니다.
> 4. Redis는 데이터 지속성을 지원하고 디스크의 메모리에 데이터를 보관할 수 있습니다. 5. Redis는 단일 코어만 사용합니다. Memcached는 여러 코어를 사용할 수 있으므로 작은 데이터를 저장할 때 각 코어의 Redis는 평균적으로 Memcached보다 성능이 더 높습니다.
- Redis는 어떻게 지속성을 달성합니까?
> 1. RDB 지속성, 메모리의 Redis 상태를 하드 디스크에 저장하는 것은 데이터베이스 상태를 백업하는 것과 같습니다.
> 2. AOF 지속성(Append-Only-File), AOF 지속성은 Redis 서버 잠금 실행의 쓰기 상태를 저장하여 데이터베이스를 기록합니다. 백업 데이터베이스에서 수신한 명령과 동일하게 AOF에 작성된 모든 명령은 Redis 프로토콜 형식으로 저장됩니다.
### 웹 보안 예방
- CSRF란 무엇입니까? 그것을 예방하는 방법은 무엇입니까?
> CSRF(교차 사이트 요청 위조)는 일반적으로 "교차 사이트 요청 위조"라고 이해됩니다. 공격자가 사용자의 신원을 도용하고 서버를 속여 공격 요청을 완료합니다.
예방 조치:
1. 인증 코드를 사용하세요
2. 각 요청에 토큰을 추가하고 인증하세요
- XSS란 무엇인가요? 그것을 예방하는 방법은 무엇입니까?
> 사용자 목적.
XSS 공격을 방지하는 방법에는 여러 가지가 있습니다. 핵심 본질은 사용자 입력 데이터를 절대 신뢰하지 않고 항상 사용자 데이터 필터링을 유지하는 것입니다.
- SQL 주입이란 무엇입니까? 그것을 예방하는 방법은 무엇입니까?
> SQL 주입은 공격자가 어떤 방식으로든 서버를 속여 결과적으로 실행해서는 안되는 일부 SQL을 실행하는 것을 의미합니다.
SQL 주입의 일반적인 시나리오
1. 대량의 정크 데이터가 데이터베이스에 주입되어 서버가 느리게 실행되고 충돌이 발생합니다.
2. 애플리케이션의 개인 데이터를 노출하기 위해 SQL 삽입 사용
예방 조치:
1. 사용자 데이터를 계속 필터링합니다.
2. 인증 코드와 같은 입력 확인을 추가합니다. . 예 개인 데이터는 암호화되어 있으며 일반 텍스트 저장이 금지됩니다
### 자세한 내용을 읽어보세요
- [3년차 PHPer 인터뷰 요약](http://coffeephp.com/articles/4?utm_source=laravel-china.org )
- [쓰레기 재활용 메커니즘](http://docs.php.net/manual/zh/features.gc.performance-considerations.php)
- [S.O.L.I.D 객체 지향 설계](https://laravel-china .org/articles/4160 /solid-object- Oriented-design-and-programming-oodoop-notes?order_by=created_at&)
- [IOC에 대한 간략한 토론 - IOC가 무엇인지 설명](http://www.cnblogs .com/DebugLZQ/archive/ 2013/06/05/3107957.html)
- [Redis와 Memcached의 차이점](https://www.biaodianfu.com/redis-vs-memcached.html)
- [CSRF 공격과 방어](https:/ /www.cnblogs.com/phpstudy2015-6/p/6771239.html)
- [XSS 크로스 사이트 스크립팅 공격](
https://www.cnblogs.com/phpstudy2015-6 /p/6767032.html#_label9)
관련 추천:
위 내용은 PHP 인터뷰 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!