>  기사  >  백엔드 개발  >  PHP 면접에서 꼭 물어봐야 할 면접 질문

PHP 면접에서 꼭 물어봐야 할 면접 질문

不言
不言원래의
2018-05-15 14:04:4321527검색

이 글의 내용은 PHP 면접에서 꼭 물어봐야 할 면접질문으로 이곳에 공유해 드리며, 도움이 필요한 친구들에게도 참고가 될 수 있도록 함께 살펴보겠습니다

관련 추천: " 2019 PHP 면접 질문 총정리(모음)

1. CSS 포지셔닝 방법은 무엇인가요? 그리고


position은 영어로 "position"을 의미합니다. 이는 주로 요소의 위치 지정을 구현하는 데 사용됩니다.

CSS에는 세 가지 유형의 위치 지정이 있습니다.

position:fixed 위치 지정.

position: relatvie 상대 위치 지정

position:absolute 절대 위치 지정

position:static 특별한 위치 지정이 없습니다(기본값).

참고:

위치 속성을 사용할 때는 위치 좌표와 함께 사용해야 합니다!

left: 는 위치가 지정된 요소가 왼쪽에서 얼마나 떨어져 있는지 나타냅니다.

right: 는 위치가 지정된 요소가 오른쪽에서 얼마나 떨어져 있는지 나타냅니다.

top: 은 위치가 지정된 요소가 얼마나 멀리 있는지 나타냅니다.

bottom: 위치 지정 요소가 아래쪽에서 얼마나 떨어져 있는지 나타냅니다.

1 고정 위치 지정

구문:

위치: 고정

고정 위치 지정, 를 기준으로 위치 지정 브라우저 창. 페이지를 어떻게 스크롤하더라도 고정 위치 지정 요소에 의해 표시되는 위치는 변경되지 않습니다!

특징:

고정 위치 요소는 표준 문서 흐름과 분리됩니다.

고정 위치 요소의 수준은 표준 문서 흐름의 요소보다 높으므로 고정 위치 요소는 표준 문서 흐름의 요소를 덮습니다

고정 위치 요소는 더 이상 공간을 차지하지 않습니다.

고정 위치 요소 브라우저가 스크롤할 때 표시된 위치는 스크롤되지 않습니다.

2 상대 위치 지정

구문:

위치:상대;

상대 위치 지정 "을 기준으로 합니다. Original Self'를 통해 자신의 위치를 ​​잡아보세요!

특징:

상대적으로 배치된 요소는 표준 문서 흐름에서 벗어나지 않습니다.

상대적으로 배치된 요소가 위치 좌표를 설정하지 않으면 상대적으로 배치된 요소는 여전히 원래 위치에 있습니다.

상대 위치 지정 요소 이후 위치 좌표를 설정하면 고향에 구멍이 남게 됩니다.

상대적으로 배치된 요소는 표준 문서 흐름에서 요소를 압도합니다.

상대적으로 위치하는 요소의 위치 좌표 값은 음수가 될 수 있습니다

참고:

고향에 구덩이를 남기게 되므로 일반적으로 상대적으로 위치하는 요소는 단독으로 사용되는 경우가 거의 없습니다. " 절대 위치 지정" 요소가 사용됩니다.

3 절대 위치 지정

문법:

위치:절대;

절대 위치 지정이란 무엇인가요?

절대 위치 요소는 "조위 위치 요소"를 기준으로 위치가 지정됩니다!

조상 위치 요소란 무엇인가요?

절대적으로 위치된 요소먼저 상위 요소에 위치 속성 세트가 있는지 확인합니다

위치 속성 세트가 있으면 상위 요소를 기준으로 위치가 지정됩니다.

그러나 상위 요소의 경우 positioning 속성이 설정되어 있지 않으면 상위 요소의 상위 요소에 positioning 속성이 설정되어 있는지 확인합니다. 설정된 경우 상위 요소의 상위 요소를 기준으로 배치됩니다. 설정되지 않은 경우 한 수준 위로 계속 검색됩니다.

상위 요소에 위치 속성이 설정되어 있지 않으면 "

브라우저 창

"을 기준으로 위치가 지정됩니다!

① 절대 위치를 직접 설정한 경우: 상위 요소에서 위치 속성을 설정하지 않은 경우 몸체를 기준으로 위치가 지정됩니다. ② 절대 위치를 직접 설정한 경우: 상위 요소

에서 위치를 설정합니다. 상위 요소의 위치가 지정됩니다

3절대 위치 지정을 직접 설정하는 경우: 상위 요소에도 위치 지정 속성이 설정된 경우 상위 요소

2를 기준으로 위치가 지정됩니다. JQ를 사용하여 AJAX 요청을 보낼 때 $.ajax를 구성해야 합니다. 어떤 매개변수가 있나요? ? 무슨 뜻인가요? ?

jQuery.ajax(options)

매개변수 설명:

options: JSON 형식의 데이터여야 하는 매개변수는 하나만 있습니다.

async: 비동기인지 여부에 관계없이 true는 비동기를 의미하고 false는 동기를 의미합니다. 기본값은 true

cache: 캐시 여부, true는 캐싱, false는 캐싱하지 않음, 기본값은 true

complete: Ajax 상태 코드가 4

일 때 트리거되는 콜백 함수contentType: 요청 헤더(있는 경우) POST 요청, 이 매개변수는 application/x-www-form-urlencoded

data: Ajax 요청을 보낼 때 전달되는 매개변수이며 문자열이어야 합니다.

dataType: 예상되는 반환 값 유형(텍스트일 수 있음) /xml/json 데이터 유형

success: Ajax 상태 코드가 4이고 응답 상태 코드가 200

일 때 트리거되는 콜백 함수type: 전송된 http 요청, get 또는 post가 가능함

url: URL 주소 요청

3. 동기 요청은 언제 사용하나요? ? 비동기 요청은 언제 사용하나요? ?


1. 동기 요청이란 무엇입니까? (false)

동기 요청은 현재 요청이 발행된 후에는 요청이 완료되고 데이터가 반환될 때까지 기다려야 함을 의미합니다. 그래서 우리는 줄을 서고, 다음 사람이 인계받기 전에 앞에 있는 사람이 자신의 일을 마쳤습니다. 즉, JS 코드가 현재 AJAX에 로드되면 페이지의 모든 코드가 로드를 중지하고 페이지는 정지된 애니메이션 상태가 됩니다. AJAX가 완료되면 다른 코드가 계속 실행됩니다. 코드와 페이지는 정지된 애니메이션 상태를 해제합니다(즉, ajax가 데이터를 수신한 후 반환되면 다음 함수 2)가 실행됩니다.
2. 비동기 요청이란 무엇입니까? (true)
비동기 요청은 요청을 보내는 동안 브라우저가 계속해서 무엇이든 할 수 있음을 의미합니다. 요청을 보내는 것은 페이지 로딩과 사용자 작업에 영향을 미치지 않습니다. 맨 위에는 서로 영향을 주지 않고 각자의 길을 갑니다.
일반적으로 기본값은 true, 비동기입니다. 비동기 요청은 사용자 경험에 전혀 영향을 미치지 않습니다. 요청이 길거나 짧더라도 사용자는 페이지의 다른 콘텐츠를 운영하는 데 집중하고 있으며 기다리고 싶지 않습니다.

4. PHP에는 어떤 마법의 방법이 있나요? ?


Magic 메소드에는 다음이 포함됩니다:

__construct(), 클래스 생성자

__destruct(), 클래스 소멸자

__call(), 객체에서 액세스할 수 없는 메소드를 호출할 때 호출됨

__callStatic( ),

__get 호출 () 정적 모드에서 접근할 수 없는 메소드를 호출할 때, 클래스의 멤버 변수를 얻을 때

__set()를 호출하고, 클래스의 멤버 변수를 설정할 때, 접근할 수 없을 때

__unset()을 호출합니다. )는 속성에 액세스하기 위해 isset() 또는empty()를 호출할 때 호출되고, 액세스할 수 없는 속성에 대해 unset()을 호출할 때 호출됩니다.

__sleep(), serialize() 실행 시 이 함수가 먼저 호출됩니다.

__wakeup(), unserialize() 실행 시 이 함수가 먼저 호출됩니다.

__toString(), 클래스가 실행될 때 응답 메서드 함수

__set_state()를 호출하여 객체를 호출할 때 응답 메서드인 문자열

__invoke()로 처리되며, 이 정적 메서드는 클래스를 내보내기 위해 var_export()가 호출될 때 호출됩니다.

__clone(), 객체 복사가 완료되면

__autoload()를 호출하고, 정의되지 않은 클래스

__debugInfo()를 로드하고, 필요한 디버깅 정보를 인쇄합니다.

5 get 메소드 및 post 메소드에 대한 간략한 설명.

① 매개변수 전달 방식이 다릅니다


get 요청은 url 끝 부분의 매개변수를 전달합니다

post 요청은 빈 줄이 요청된 위치의 매개변수를 전달합니다

② 전달된 크기 매개변수가 다릅니다

get 요청에 최대 매개변수가 전달되었습니다. 값은 2kb

게시 요청에는 이론상 제한이 없지만 실제 응용 프로그램에서는 php.ini 파일의 영향을 받으며 일반적으로 2M입니다

③ 매개변수의 종류가 다릅니다

get 요청, 문자열만 전달할 수 있습니다

Post 요청은 문자열뿐만 아니라 바이너리 데이터도 전달할 수 있습니다

4 보안이 다릅니다

비교적으로 post 요청의 보안은 그보다 약간 높습니다. get 요청

요청 헤더 매개변수가 다릅니다

6. PHP Word 함수에서

I 수신 함수


M: 기본 모델 클래스 인스턴스화

D: 사용자 정의 모델 클래스 인스턴스화

U: URL 주소 조립

7. 추상 클래스와 인터페이스의 차이점은 무엇인가요? ?

1. 인터페이스의 사용은 키워드 구현을 통해 이루어집니다. 추상 클래스의 사용은 키워드 확장을 통해 이루어집니다. 물론 인터페이스는 키워드 확장을 통해 상속될 수도 있습니다.


2. 멤버 변수(클래스 정적 변수 포함)는 인터페이스에서 선언할 수 없지만 클래스 상수는 선언할 수 있습니다. 데이터 캡슐화를 구현하기 위해 추상 클래스에서 다양한 유형의 멤버 변수를 선언할 수 있습니다.

3. 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있을 수 있습니다.

4. 인터페이스의 메서드는 기본적으로 공개 유형인 반면 추상 클래스의 메서드는 비공개, 보호 또는 공개로 수정될 수 있습니다.

5. 클래스는 동시에 여러 인터페이스를 구현할 수 있지만 클래스는 하나의 추상 클래스에서만 상속할 수 있습니다.

공통점: 사양에 사용됨

추상 클래스: 인스턴스화할 수 없으며 추상 키워드를 통해서만 선언할 수 있습니다. 추상 클래스는 메서드 본문이 없고 재정의되도록 생성되는 하나 이상의 추상 메서드를 포함해야 합니다. 하위 클래스별

인터페이스: 인터페이스를 통해 선언됩니다. 인터페이스의 멤버 상수와 메서드는 모두 공개이며 인터페이스는 다중 상속을 구현할 수 있습니다.

one 종류의 실제 수업 , 가능 만들어지세요 its를 위해 hiskind 부모 을(를) 사용하기 위해 옵니다. 추상 클래스는 abstract 키워드를 통해 선언됩니다. 추상 클래스는 모두 멤버 변수와 멤버 메서드를 포함합니다. 둘의 차이점은 추상 클래스에는 하나 이상의 추상 메서드가 포함되어야 한다는 것입니다. 이 메서드는 본질적으로 하위 클래스에 의해 재정의됩니다. 추상 메소드의 형식은 다음과 같습니다. abstract function abstractMethod(); 인터페이스는 인터페이스 키워드를 통해 선언됩니다. 인터페이스의 멤버 상수와 메소드는 모두 공개 키워드를 작성할 필요가 없습니다. , 인터페이스의 메서드에도 메서드 본문이 없습니다. 인터페이스의 메소드는 본질적으로 서브클래스에 의해 구현되도록 의도되었습니다. 추상 클래스와 인터페이스로 구현되는 함수는 매우 유사합니다. 가장 큰 차이점은 인터페이스가 다중 상속을 구현할 수 있다는 것입니다. 추상

과 애플리케이션의 인터페이스 사이의 선택은 특정 구현에 따라 다릅니다.

하위 클래스는 확장을 사용하여 추상 클래스를 상속하고 하위 클래스는 구현을 사용하여 인터페이스를 구현합니다.

8. 네임스페이스를 이해하는 방법은 무엇입니까? ?

클래스 및 함수 메서드 충돌 방지Namespace는 다음 두 가지 문제를 해결할 수 있습니다.

(1) 사용자가 작성한 코드와 PHP 내부 클래스/함수/상수 또는 타사 클래스/함수/상수 이름 충돌 사이 . (2) 코드의 가독성을 높이고 작성되는 코드 양을 줄이기 위해 매우 긴 식별자에 대한 별칭을 만듭니다.

9. 네임스페이스 지원을 시작하는 PHP 버전은 무엇인가요? ?

ThinkPHP3.2

PHP는 5.3.0 이후 버전부터 네임스페이스를 지원하기 시작합니다.

10. PHP에는 어떤 확장 기능이 있나요? ?


PDO: 데이터베이스에 액세스하기 위해 PHP가 정의한 가볍고 일관된 인터페이스입니다.

CURL 확장

GD 확장

Memcache

Mysql


11. SVN에서 충돌이 발생하면 어떻게 해야 하나요? ?

SVN 역할: 공동 개발.

통합:


업데이트:

12. MVC를 이해하는 방법은 무엇입니까? ?

MVC는 애플리케이션 입력, 처리 및 출력을 분리하도록 강제하는 프레임워크 패턴입니다. MVC를 사용하는 애플리케이션은 모델, 뷰, 컨트롤러의 세 가지 핵심 구성 요소로 나뉩니다. 그들은 각자 자신의 업무를 처리합니다.

MVC는 소프트웨어 설계의 프로그래밍 모델을 나타냅니다. 이 모드에서는 비즈니스 운영, 데이터 표시 및 데이터 상호 작용이 분할됩니다. M: 대표는 특정 모델(모델)과 상호 작용하는 것입니다. V: 대표는 특정 보기(view)입니다. 의 주요 기능은 데이터를 위해 사용자와 상호 작용하는 것입니다

C: 대표자는 특정 컨트롤러(컨트롤러)이며, 주요 기능은 특정 비즈니스 로직을 처리하는 것입니다

모델, 뷰, 컨트롤러로 완성됩니다. 애플리케이션에서, 모델 계층은 데이터 제공을 담당하고, 데이터베이스 관련 작업은 처리를 위해 모델 계층으로 넘겨지며, 뷰 계층은 대화형 인터페이스를 제공하고 데이터를 출력하며, 컨트롤러 계층은 요청을 수신하여 배포하는 역할을 합니다. 해당 모델을 처리한 다음 뷰 레이어를 호출하여 표시합니다.

13. 제품 테이블에는 어떤 필드가 있나요? ?

제품 ID, 제품명, 제품번호, 제품 카테고리 ID, 시세, 저희 매장 가격, 제품 썸네일, 제품 썸네일, 인기상품 여부, 1은 인기상품, 0은 아니오, 추천 여부, 1 추천함, 0은 추천하지 않음, 인기 상품인지 1은 신제품인지 0은 아님, 시간 추가, 제품 삭제 여부 1 정상 0 삭제 상태, 판매 중인지 여부 1 판매 0 기성품 상태,

14. 동일한 상품ID의 속성이 다른 경우 어떻게 해야 하나요? ?

제품 테이블의 속성은 세트로 저장됩니다.

15. 쿠키 및 세션


다음과 같은 차이점이 있습니다.

1. 클라이언트 사용자 정보에서 세션은 서버 측에 사용자 정보를 저장합니다.

2. 저장된 내용: 쿠키는 문자열을 저장하고 세션은 개체를 저장합니다.

3. 쿠키는 클라이언트에 오랫동안 저장될 수 있습니다. 세션이 종료되면 세션이 변경됩니다.

4. 일반적으로 쿠키는 중요하지 않은 정보를 저장하며, 세션에 의해 중요한 정보가 저장됩니다.

5. 쿠키에는 세션 쿠키와 파일 쿠키의 두 가지 유형이 있습니다. 파일 쿠키는 브라우저를 닫으면 해당 데이터를 파일에 저장하고 만료 시간을 설정합니다. 브라우저를 닫은 후 만료 시간이 만료되지 않은 경우 브라우저를 다시 열 때 데이터가 계속 존재합니다. .

16. 장바구니 구현 원칙


두 가지 상황이 있습니다.

1. 사용자가 로그인되어 있으면 데이터가 쿠키에 저장됩니다. 쿠키는 데이터베이스로 전송됩니다.

2. 사용자가 로그인하면 데이터가 데이터베이스에 직접 저장됩니다.

17. RBAC 권한 관리

역할 기반 접근 제어

5개의 테이블: 2개의 중간 테이블 admin, role, rule, admin_role, role_rule

3개의 테이블: 1개의 중간 테이블

다른 관리자의 접근 가능 여부를 제어하는 ​​프로세스 코드를 통한 특정 방법은 권한 제어입니다.


RBAC(Role-Based AccessControl, 역할 기반 액세스 제어)는 사용자가 역할을 통해 권한과 연결된다는 의미입니다. 간단히 말해서 사용자에게는 여러 역할이 있고 각 역할에는 여러 권한이 있습니다. 이러한 방식으로 "사용자 역할 권한" 권한 부여 모델이 구성됩니다. 이 모델에서는 일반적으로 사용자와 역할, 역할과 권한 사이에 다대다 관계가 있습니다.

18. 인터페이스 개발을 이해하는 방법

제3자 인터페이스 파일을 먼저 다운로드하세요.

19.SMS 인증코드로 SMS 폭탄을 방지하는 방법은 무엇인가요? ?

JS 클라이언트 확인 확인

휴대폰 번호는 문자 메시지 수를 제한합니다(카운터)

(1) 그래픽 확인 추가

악의적인 공격자는 자동화된 도구를 사용하여 "동적 SMS 획득" 인터페이스를 호출하여 메시지를 보냅니다. 동적 문자 메시지의 주된 이유는 공격자가 인터페이스에 자동으로 많은 호출을 할 수 있다는 것입니다.
이미지 인증 코드를 사용하면 도구의 자동 호출을 효과적으로 방지할 수 있습니다. 즉, 사용자가 "동적 SMS 받기" 작업을 수행하기 전에 사용자에게 인증 코드를 입력하도록 요청한 후 서버에서 이미지 인증 코드가 나타납니다. 그런 다음 사용자의 휴대폰으로 동적 SMS를 보냅니다. 이 방법을 사용하면 SMS 폭탄 문제를 효과적으로 해결할 수 있습니다.

보안 그래픽 인증 코드는 다음 보호 요구 사항을 충족해야 합니다

- 안전한 생성 프로세스:사진 인증 코드는 서버 측에서 생성 및 검증되어야 합니다.
-안전한 사용 프로세스: 한 번만 유효하며,
- 인증 코드 자체는 안전합니다. 식별 도구로 쉽게 인식되지 않으며 무차별 대입 크래킹을 효과적으로 방지할 수 있습니다.

그래픽 인증 예시:

(2) 단일 IP요청 제한

이미지 인증 코드를 사용한 후 공격자가 "동적 SMS" 기능 호출을 효과적으로 자동화하는 것을 방지할 수 있습니다.
그러나 만약 공격자가 이미지 인증코드 확인 오류를 무시한다면, 실행 요청이 많아 서버에 추가적인 부담을 주고 업무 이용에 영향을 미치게 됩니다. 서버 측에서는 단위 시간 내에 단일 IP에 대한 요청 수를 제한하는 것이 좋습니다. 사용자 요청 수(실패한 요청 수 포함)가 설정된 임계값을 초과하면 해당 IP에 대한 요청이 일정 기간 동안 중단됩니다. 상황이 특히 심각한 경우 해당 IP를 블랙리스트에 추가하고 해당 IP로부터의 액세스 요청을 금지할 수 있습니다. 이 조치를 통해 IP 주소로부터의 대량 요청을 제한하고, 공격자가 동일한 IP를 통해 다수의 사용자를 공격하는 것을 방지하고, 공격 난이도를 높여 비즈니스의 정상적인 발전을 보장할 수 있습니다.

(3) 전송 시간 제한

동적 문자 메시지의 반복 전송 간격을 제한하는 것이 좋습니다. 즉, 단일 사용자가 동적 문자 메시지 전송을 요청한 후 서버 측에서는 일정 시간이 지난 후에만 두 번째 동적 문자 메시지 요청을 제한합니다( 여기서는 일반적으로 60초입니다. 이 기능은 사용자 경험을 더욱 보호하고 수동 공격을 포함한 악성 스팸 확인 SMS 메시지를 방지할 수 있습니다.

동적 SMS 인증코드 사용 프로세스 완료

20. 제품 사진은 어떻게 업로드하나요? ?

21. 세션 유효 기간은 어떻게 설정하나요? ?

22. 결제를 위한 동기 콜백과 비동기 콜백? ?


특정 동기 콜백과 비동기 콜백

동기 콜백 기능 : 결제 완료 후 사용자가 해당 가맹점 페이지로 점프할 수 있도록 함(사용자 결제 후 사용자의 결제가 올바르게 처리될 수 있도록 보장) 완료)

비동기 콜백 기능: 판매자가 사용자의 결제를 올바르게 처리하는지 확인

23.Alipay의 결제 프로세스는?


1. Alipay 계정 정보를 신청하고 해당 APPID, 공개 키(Alipay에 제공) 및 개인 키(직접 보관)를 받으세요.

2. 공식 문서를 다운로드하고 로컬에서 데모 테스트를 구축합니다. config.php APPID, 동기 및 비동기 콜백 주소, Alipay 개인 키 및 기타 정보에 설정합니다.

3. 백그라운드 애플리케이션 만들기

4. 구체적으로 코드를 사용하여 결제 기능을 구현합니다

24. Alipay 비동기 콜백의 역할은 무엇인가요? ?


비동기 콜백 기능: 판매자가 사용자의 결제를 올바르게 처리하는지 확인

1. 동기화가 실행되지 않고 비동기 일방적 요청이 이루어지도록 합니다. ()

2. 주문 누락 문제 해결

3. 상대적으로 안전함

동기식 콜백 기능: 사용자가 결제를 완료하면 해당 판매자 페이지로 이동할 수 있음을 인식합니다. 사용자 결제가 완료된 후 올바르게 처리됨) 처리 작업) (get 메서드)

비동기 콜백 기능: 판매자가 사용자 결제를 올바르게 처리했는지 확인(포스트 메서드)

25 제품 모듈의 다차원 속성

26. 일반적으로 사용되는 Linux 명령

파일 검색:

find

-name 파일 이름으로 검색

-group: 파일이 속한 그룹으로 검색

-user: 소유자로 검색 파일의

locate 명령, 데이터를 검색하는 데 사용되는 파일 이름

lame

df 명령 : 디스크 디스크 정보

-l : 로컬 디스크 디스크 정보

-h 표시

: 1024에 디스크 정보 표시

-H

: 1000에 디스크 정보 표시

-T

: 디스크 형식 표시 정보

-t

: 지정된 형식으로 디스크 정보 표시 cd 사용자 이름:

cd에 대해 입력 ~: 집으로 돌아가기

yy: 복사 p: 붙여넣기

vim 파일 이름: 파일 보기

27, 상태 코드 hppt? ?

1, 301 MovedPermanently: 요청한 리소스가 새 위치로 영구적으로 이동되었으며, 이 리소스에 대한 향후 참조는 이 응답과 함께 반환된 여러 URI 중 하나를 사용해야 합니다.

영구 리디렉션

. 2. 302 임시 이동: 요청된 리소스가 다른 URI의 요청에 일시적으로 응답합니다. 이러한

리디렉션은 임시

이므로 클라이언트는 향후 요청을 원래 주소로 계속 보내야 합니다. 404 찾을 수 없음: 요청이 실패했으며 요청한 리소스를 서버에서 찾을 수 없습니다. 이 상황이 일시적인지 영구적인지 사용자에게 알려주는 정보가 없습니다

4. 200 OK: 요청이 성공했으며 요청에서 예상하는 응답 헤더 또는 데이터 본문이 이 응답과 함께 반환됩니다. 이 상태 코드는


이며, 이는 정상적인 상태를 의미합니다.

200(성공): 서버가 요청을 성공적으로 처리했습니다. 일반적으로 이는 서버가 요청한 웹 페이지를 제공했음을 의미합니다.
201(생성됨): 요청이 성공했고 서버가 새 리소스를 생성했습니다.
202(수락됨): 서버가 요청을 수락했지만 처리되지 않았습니다.
203( Non-Authorization Information): 서버 요청이 성공적으로 처리되었지만 반환된 정보는 다른 소스에서 왔을 수 있습니다.
204(No Content): 서버가 요청을 성공적으로 처리했지만 콘텐츠가 반환되지 않았습니다.
205(Reset Content): The 서버가 요청을 성공적으로 처리했지만 콘텐츠가 반환되지 않았습니다. 모든 콘텐츠
206(부분 콘텐츠): 서버가 GET 요청의 일부를 성공적으로 처리했습니다
404(찾을 수 없음): 서버가 요청한 웹페이지를 찾을 수 없습니다
500(내부 서버 오류) : 서버에 오류가 발생하여 요청

28을 완료할 수 없습니다. require 및 include


require() 문의 성능은 지정된 파일을 포함하고 실행한다는 점에서 include()와 유사합니다.

차이는 다음과 같습니다. include() 문은 파일을 실행할 때마다 읽고 평가해야 합니다. 오류가 보고되면 후속 코드가 실행되는 것을 막지 않습니다. require()의 경우 파일은 다음과 같습니다. 한 번만 처리됩니다(실제로 파일 내용이 require() 문을 대체합니다). 즉, 코드가 여러 번 실행될 가능성이 높으면 require()를 사용하는 것이 더 효율적이라는 의미입니다. 반면, 코드를 실행할 때마다 다른 파일을 읽거나 파일 집합을 반복하는 루프가 있는 경우에는 include() 문을 사용하세요

include를 사용할 때 로드

에서 로드해야 합니다. 시작

29. Linux 시스템에서 PHP 프로그램 확장을 컴파일하는 방법은 무엇입니까? ?

1. 소프트웨어 압축 패키지를 찾아 압축을 푼다

3. php.ini 구성

4. 트랜잭션 이해

작업은 전체를 구성하는 여러 구성 요소로 구성됩니다. 작업은 모두 성공하거나 모두 실패하고 원래 상태로 돌아갑니다.


SQL 문을 실행하기 전에 트랜잭션(트랜잭션의 시작점)을 여는 start transaction을 먼저 실행한 다음 여러 SQL 문을 실행할 수 있고 마지막으로 트랜잭션을 종료한다는 것은 여러 SQL 문을 제출하는 것을 의미합니다. 트랜잭션에서 문의 효과는 데이터베이스에 유지됩니다. 또는 롤백(rollback), 즉 트랜잭션의 시작점으로 롤백(rollback)을 의미하며 이전 작업이 모두 취소되었습니다!

트랜잭션의 네 가지 주요 특징(

ACID)

원자성: 트랜잭션의 모든 작업은 환원 불가능한 원자 단위입니다. 트랜잭션의 모든 작업은 성공적으로 실행되거나 실패합니다. 일관성: 트랜잭션이 실행된 후 데이터베이스 상태는 다른 비즈니스 규칙과 일관성을 유지합니다. 예를 들어 이체업무의 경우 거래의 성사 여부와 관계없이 이체에 관련된 두 계좌의 잔액의 합은 변하지 않고 그대로 유지되어야 한다.

격리: 격리는 동시 작업에서 각 동시 트랜잭션이 서로 간섭하지 않도록 여러 트랜잭션을 격리해야 함을 의미합니다.

내구성: 트랜잭션이 성공적으로 제출되면 트랜잭션의 모든 데이터 작업이 데이터베이스에 유지되어야 합니다. 트랜잭션이 제출된 직후 데이터베이스가 충돌하더라도 데이터베이스가 다시 시작될 때 일부 메커니즘이 보장되어야 합니다.

31.

PHP는 현재 시간을 얻습니다. time()

Php는 문자열을 가로챕니다: substr 함수

PHP는 문자열에 하위 문자열이 있는지 찾습니다:

32. 다섯 가지 관련 배열 처리 함수는 무엇일까요?

In_array: 배열에 요소가 존재하는지 확인

array_reverse() 배열의 요소를 되감고 반환 값은 플래시백 이후의 배열입니다.

array_splice(array1,start,length,array2)는 배열에서 해당 요소를 제거하고 새 요소로 대체합니다.

array_push()(푸시)는 배열의 끝에 하나 이상의 요소를 추가합니다.

array_pop( ) (팝) 배열에서 마지막 요소를 삭제하세요

33. 도메인 간 요청 방법은 무엇인가요? ?

JSONP

CORS

34. 스토리지 엔진은 몇 개인가요? 차이점은 무엇입니까? ?

Mysiam 대 innodb

MyISAM 유형은 트랜잭션 처리와 같은 고급 처리를 지원하지 않지만 InnoDB 유형은 지원합니다.

MyISAM 타입 테이블은 성능을 중시하며 InnoDB 타입에 비해 실행 속도는 빠르지만 트랜잭션 지원을 제공하지 않는 반면, InnoDB는 트랜잭션 지원과 외래 키 등 고급 데이터베이스 기능을 제공합니다.
색인 생성: 경고 tableablename 색인 추가(`필드 이름`)

35. Redis 기본 포트 번호는 무엇입니까? 데이터 유형?

6379


String, hash, list(linked list), set(set), zset(ordered set)

36. Redis 실제 사례--빠른 플래시 판매, 카운터, 추천, 수집 사례

플래시 판매:

Redis의 목록 연결 목록과 팝 작업을 사용합니다. 많은 사용자가 동시에 도착하더라도 순차적으로 실행됩니다.


1 이제 제품 테이블의 인벤토리를 대기열에 저장합니다. 2. 긴급 구매를 시작하고 인벤토리의 캐시 주기를 설정합니다

3. 클라이언트는 주문 작업을 실행하고 주문하기 전에 Redis 대기열 인벤토리를 결정합니다

카운터:

37. 그리고 MySQL의 올바른 링크는 무엇입니까? ?

왼쪽 조인: 왼쪽 테이블을 기준으로 왼쪽 테이블의 레코드가 쿼리 결과에 나타납니다. 오른쪽 테이블에 일치하는 레코드가 없으면 null로 채워집니다.

오른쪽 조인: 오른쪽 테이블을 기반으로 하며, 왼쪽 테이블에 일치하는 레코드가 없으면 null로 채워집니다.

내부 조인: 두 테이블의 상태가 동일하며, 조인 조건을 만족하는 레코드만 쿼리 결과에 나타납니다.

38. Memcache의 기본 포트 번호는 무엇인가요? ? , Memcache와 Redis의 차이점??

27017,28017


Memcache 캐시는 해시 테이블을 사용하여 모든 데이터를 메모리에 저장하며, 각 데이터 조각은 키와 값으로 구성되며 각 키는 고유합니다. 특정 값에 액세스하려면 먼저 값을 찾은 다음 결과를 반환합니다. Memcache는 LRU 알고리즘을 사용하여 만료된 데이터를 점차적으로 삭제합니다

39. MySQL 잠금 메커니즘

40. 어떻게 하나요? ?

1. 데이터베이스 디자인

3. 읽기 및 쓰기 분리

4. 전자상거래 프로젝트에서 제품 재고는 언제 변경되나요? ?

1. 상품 추가시 상품 재고가 늘어납니다. 재고 테이블은 다양한 속성에 대해


를 추가합니다. 2. 주문 결제가 성공하면 재고가 줄어듭니다

3. 주문 결제가 실패하면 재고가 줄어들지 않습니다

4. 고객이 반품하면 재고가 늘어납니다

42. MySQL 쿼리 최적화

1. 전체 테이블 쿼리를 피하고 해당 필드에 대한 인덱스를 생성하세요.

2. 너무 긴 쿼리 문과 일괄 쿼리를 피하세요.

3. where 뒤에 함수 연산이 있을 수 없습니다.

4. 왼쪽 원칙의 첫 번째 필드에는 인덱스가 있어야 합니다.

5. where 뒤에 인덱스를 만들고

관련 권장 사항:

PHP 인터뷰 질문 수집 및 공유

PHP 인터뷰 질문 및 답변

위 내용은 PHP 면접에서 꼭 물어봐야 할 면접 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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