>  기사  >  백엔드 개발  >  최신 클래식 PHP 인터뷰 질문 요약(2부)

최신 클래식 PHP 인터뷰 질문 요약(2부)

黄舟
黄舟원래의
2017-03-18 09:17:34911검색

PHP 주니어 클래식 면접 질문 요약(1부)

17. isset, 비어 있음, is_null의 차이

isset은 변수가 정의되었는지 비어 있는지를 결정합니다

  变量存在返回ture,否则返回false
  变量定义不赋值返回false
  unset一个变量,返回false
  变量赋值为null,返回false

비어 있음: 변수의 값이 비어 있는지 확인합니다. false로 변환할 수 있는 모든 것이 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

    "",0,"0",NULL,FALSE都认为为空,返回true
    没有任何属性的对象都认为是空

is_null: 들어오는 값(값, 변수, 표현식)이 null인지 확인

    定义了,但是赋值为Null
    定义了,但是没有赋值
    unset一个变量

18. 프런트엔드 디버깅 도구

    🎜>
  • Firefox Firebug

  • Chrome 개발 도구

  • Emmet

  • JSON 형식 확인 도구

19.

mysql의 인덱스, 기본 키, 고유 인덱스, 공동 인덱스의 차이점과 이들이 데이터베이스 성능에 미치는 영향을 간략하게 설명하세요. ( 읽기 및 쓰기 모두에서) (시나 기술부)

인덱스는 특별한 종류의 파일입니다(InnoDB 데이터 테이블의 인덱스는 테이블 공간의 모든 레코드를 포함합니다). 데이터 테이블 참조 포인터.

일반 인덱스(KEY 또는 INDEX 키워드로 정의된 인덱스)의 유일한 작업은 데이터에 대한 액세스 속도를 높이는 것입니다.
일반 인덱스를 사용하면 인덱스된 데이터 열에 중복 값이 ​​포함될 수 있습니다. 특정 데이터 열에 서로 다른 값만 포함될 것이라고 판단할 수 있는 경우 해당 데이터 열에 대한 인덱스를 생성할 때 UNIQUE 키워드를 사용하여 이를 고유 인덱스로 정의해야 합니다. 즉, 고유 인덱스는 데이터 레코드의 고유성을 보장할 수 있습니다.
기본 키는 특수한 고유 인덱스입니다. 기본 키 인덱스는 테이블에 하나만 정의할 수 있으며, 기본 키는 레코드를 고유하게 식별하는 데 사용되며 PRIMARY KEY 키워드를 사용하여 생성됩니다.
인덱스는 공동 인덱스인 INDEX(columnA, columnB) 인덱스와 같이 여러 데이터 열을 포함할 수 있습니다.
인덱스는 데이터 쿼리 속도를 크게 향상시킬 수 있지만, 테이블 삽입, 삭제, 업데이트 속도는 느려지게 됩니다. 왜냐하면 이러한 쓰기 작업을 수행할 때에는 인덱스 파일을 동작시켜야 하기 때문입니다.

20. 데이터베이스에서 트랜잭션이란 무엇인가요?

트랜잭션은 하나의 단위로 정렬된 데이터베이스 작업 집합입니다. 그룹의 모든 작업이 성공하면 트랜잭션이 성공한 것으로 간주되며, 하나의 작업만 실패하더라도 트랜잭션은 성공하지 못합니다. 모든 작업이 완료되면 트랜잭션이 커밋되고 해당 수정 사항이 다른 모든 데이터베이스 프로세스에 적용됩니다. 작업이 실패하면 트랜잭션이 롤백되고 트랜잭션의 모든 작업 효과가 취소됩니다. ACID의 네 가지 주요 특성은 원자성, 격리성, 일관성 및 내구성입니다.

21. XSS 공격을 이해하시나요? 그것을 예방하는 방법은 무엇입니까?

XSS는 크로스 사이트 스크립팅 공격으로, 먼저 공격자가 특권 모드에서 구성한 스크립트를 실행한 후 안전하지 않은 Activex 컨트롤을 사용하여 악의적인 행위를 수행합니다. .

htmlspecialchars() 함수를 사용하여 제출된 콘텐츠를 필터링하고 문자열의 특수 기호를 구체화합니다.

22. SQL 인젝션 취약점의 원인은 무엇인가요? 그것을 예방하는 방법은 무엇입니까?

SQL 인젝션 원인 : 프로그램 개발 과정에서 SQL 문의 표준작성 및

특수문자 필터링에 주의를 기울이지 않아 클라이언트에서 일부 내용을 제출하는 경우가 있었습니다. 전역 변수 POST 및 GET을 통한 SQL 문은 정상적으로 구현됩니다.

SQL 인젝션 방지 방법:
  1. 구성 파일에서 Magic_quotes_gpc 및 Magic_quotes_runtime 설정을 활성화하세요.

  2. SQL 문을 실행할 때 사용하세요.

    슬래시 추가SQL 문 변환

  3. SQL 문을 작성할 때 큰따옴표와 작은따옴표를 생략하지 마세요.

  4. SQL 문에서 업데이트, 삽입, 삭제, 선택, * 등 일부 키워드를 필터링합니다.

  5. 데이터베이스 테이블과 필드의 명명 능력을 향상시키고, 중요한 필드에는 프로그램의 특성에 따라 추측하기 어렵게 이름을 지정하세요.

  6. PHP 구성 파일에서 Register_globals를 off로 설정하고, 전역 변수 등록을 끄세요.

  7. 오류 메시지를 제어하세요. 서버에서 출력 오류 정보를 찾아보지 않고 오류 정보를 로그 파일에 기록합니다.

23. PHP 웹사이트의 주요 공격 방식은 무엇인가요?

  1. 명령어 삽입

  2. 평가 삽입

  3. 클라이언트 스크립트 삽입

  4. 교차 사이트 스크립팅(XSS)

  5. SQL 주입

  6. 교차 사이트 요청

    위조, CSRF)

  7. 세션 하이재킹

  8. 세션 고정

  9. HTTP 응답 분할

  10. 파일 업로드 취약점(파일 업로드 공격)

  11. 디렉터리 탐색(디렉터리 탐색)

  12. Remote Inclusion 공격(Remote Inclusion)

  13. 동적 변수

    평가)

  14. URL 공격(URL 공격)

  15. 양식 제출 스푸핑 양식

    제출

  16. HTTP 요청 스푸핑 공격(스푸핑된 HTTP 요청)

24. 프레임워크에서 단일 출입구와 다중 출입구는 무엇인가요?

  1. Duokou는 다양한 파일에 액세스하여 사용자 요청을 완료합니다. 단일 항목 전용 웹 프로그램은 모든 요청을 스크립트 파일로 보냅니다.

  2. 단일 입구로 권한을 더 쉽게 제어하고 http 요청에 대한 보안 검사를 용이하게 할 수 있습니다.
    단점: URL이 그다지 아름다워 보이지 않으며, 특히 검색 엔진에 친숙하지 않습니다.

25. 관계형 데이터베이스의 경우 색인 생성은 매우 중요한 개념입니다.

a ), 색인 생성에 대한 몇 가지 질문에 답해 주세요. 인덱싱의 목적은 무엇입니까?
  1. 데이터 테이블의 특정 정보에 빠르게 액세스하고 검색 속도를 향상

  2. 고유한 인덱스를 생성하여 데이터 테이블의 각 행의 고유성을 보장합니다. 데이터베이스 테이블 섹스.

  3. 테이블 및 테이블 간 조인 가속화

  4. 데이터 검색에 그룹화 및 정렬 절을 사용하면 쿼리의 그룹화 및 정렬 시간을 대폭 줄일 수 있습니다.

b) 인덱스가 데이터베이스 시스템에 미치는 부정적인 영향은 무엇입니까?

부정적 영향:
인덱스를 생성하고 유지하는 데는 시간이 걸리며, 테이블이 데이터를 차지할 뿐만 아니라 데이터 양이 늘어나면 이 시간도 늘어납니다. 공간, 각 인덱스는 물리적 공간도 차지해야 합니다. 테이블이 추가, 삭제, 수정될 때 인덱스는 동적으로 유지되어야 하므로 데이터 유지 관리 속도가 줄어듭니다.

c) 데이터 테이블 색인화의 원칙은 무엇입니까?
  1. 가장 자주 사용되는 필드에 대한 색인을 만들어 쿼리 범위를 좁힙니다.

  2. 정렬이 필요한 자주 사용되는 필드에 색인을 생성합니다

d) 어떤 상황에서 색인을 생성하는 것이 부적절합니까?
  1. 질문에 거의 포함되지 않는 컬럼이나 중복된 값이 많은 컬럼에 대해서는 인덱스를 생성하는 것이 적절하지 않습니다.

  2. 일부 특수 데이터 유형의 경우 텍스트 필드(텍스트) 등과 같은 인덱스를 생성하는 것이 적합하지 않습니다.

26. MySQL 데이터베이스

에서 MyISAM과 InnoDB의 차이점을 간략하게 설명하세요.

다른 데이터베이스와 구별되는 가장 중요한 특징은 플러그입니다. -인형 테이블 스토리지 엔진. 기억하세요: 스토리지 엔진은 데이터베이스가 아닌 테이블을 기반으로 합니다.

InnoDB와 MyISAM의 차이점:

InnoDB 스토리지 엔진:

주로 OLTP(온라인 트랜잭션 처리, 온라인 트랜잭션 처리) 애플리케이션을 위한 최초의 완전 지원 ACID입니다. 트랜잭션 저장 엔진(트랜잭션을 지원하는 BDB의 첫 번째 저장 엔진, 개발이 중단되었습니다).

기능:
  • 행 잠금 설계, 외래 키 지원
  • Oracle과 유사하게 지원 스타일 일관성 비잠금 읽기(예: 읽기 작업은 기본적으로 잠금을 생성하지 않음)
  • InnoDB는 InnoDB 자체 관리에 의해 수행되는 논리적 테이블 공간에 데이터를 배치합니다. MySQL 4.1 버전부터 각 InnoDB 스토리지 엔진 테이블은 독립적인 ibd 파일에 저장될 수 있습니다.
  • InnoDB는 MVCC(다중 버전 동시성 제어: 읽기는 쓰기 및 쓰기를 차단함)를 사용합니다. 읽기를 차단하지 않음) 높은 동시성을 확보하고 SQL 표준의 4가지 격리 수준(기본값은 REPEATABLE 수준)을 구현합니다.
  • InnoDB는 고성능 및 고가용성도 제공합니다. 버퍼 삽입, 이중 쓰기, 적응형 해시 인덱스, 미리 읽기 등의 기능
  • InnoDB는 클러스터링 방식을 사용하여 테이블에 데이터를 저장합니다. 기본 키(테이블을 생성할 때 기본 키가 명시적으로 지정되지 않은 경우 InnoDB는 각 행에 대해 6바이트 ROWID를 생성하고 이를 기본 키로 사용합니다.) InnoDB 테이블에는 세 개의 숨겨진 필드가 있습니다. 위에서 언급한 6바이트 DB_ROW_ID 외에도 6바이트 DB_TX_ID(트랜잭션 ID) 및 7바이트 DB_ROLL_PTR(해당 롤백 세그먼트의 주소를 가리킴)도 있습니다. 이는 innodb 모니터를 통해 확인할 수 있습니다.
MyISAM 스토리지 엔진:

은 주로 OLAP(온라인 분석 처리, 온라인 분석 및 처리) 응용 프로그램. 기능:

    트랜잭션을 지원하지 않지만 테이블 및 전체 텍스트 인덱스를 지원합니다. 작업 속도가 빠릅니다.
  • MyISAM 스토리지 엔진 테이블은 MYD와 MYI로 구성되며, MYD는 데이터 파일을 저장하는 데 사용되고 MYI는 인덱스 파일을 저장하는 데 사용됩니다. MySQL 데이터베이스는 인덱스 파일만 캐시하고 데이터 파일 캐싱은 운영 체제 자체에 맡겨집니다.
  • MySQL 5.0 버전부터 MyISAM은 기본적으로 256T의 단일 테이블 데이터를 지원합니다.

27. MySQL 외부 조인, 내부 조인, 셀프 조인의 차이점을 설명하세요.

먼저 교차 조인이 무엇인가요? 🎜> 교차 조인은 데카르트 곱(Cartesian product)이라고도 하며, 조건을 사용하지 않고 한 테이블의 모든 레코드를 다른 테이블의 모든 레코드와 직접 일치시키는 것을 말합니다.

내부 조인은 조건만 있는 교차 연결입니다. 조건에 맞는 레코드는 특정 조건에 따라 필터링되어 결과에 나타나지 않습니다. 즉, 내부 조인은 일치하는 선만 연결합니다.
외부 조인 결과 집합에는 조인 조건을 충족하는 행뿐만 아니라 왼쪽 테이블, 오른쪽 테이블 또는 두 테이블 모두의 모든 데이터 행이 포함됩니다. 이 세 가지 상황을 호출합니다. 왼쪽 외부 조인, 오른쪽 외부 조인, 완전 외부 조인이 있습니다.

왼쪽 외부 조인(왼쪽 조인이라고도 함), 왼쪽 테이블이 기본 테이블이고 왼쪽 테이블의 모든 레코드가 결과 집합에 표시되며 오른쪽 테이블에서 일치하지 않는 레코드는 여전히 표시되며 오른쪽에는 해당 필드 값이 NULL로 채워집니다. 오른쪽 외부 조인(오른쪽 조인이라고도 함)은 오른쪽 테이블이 기본 테이블이고 오른쪽 테이블의 모든 레코드가 결과 집합에 나타납니다. 왼쪽 조인과 오른쪽 조인은 상호 교환 가능하며 MySQL은 현재 완전 외부 조인을 지원하지 않습니다.

28. 3개 이상의 MySQL 데이터베이스 스토리지 엔진 이름을 적으세요(팁: 대소문자 구분 안 함)

MyISAM, InnoDB, BDB(BerkeleyDB), Merge, Memory(Heap), 예시 , Federated,

Archive, CSV, Blackhole, MaxDB 및 12개 이상의 엔진

29.

객체지향이란 무엇입니까? 주요 기능은 무엇입니까? 주요 원칙은 무엇입니까?

객체 지향은 프로그램의

디자인 패턴으로, 프로그램의 재사용성을 향상시키고 프로그램 구조를 보다 명확하게 만듭니다. 주요 기능은 캡슐화, 상속, 다형성입니다. 5가지
기본 원칙: 단일 책임 원칙, 개방형 및 폐쇄형 원칙, 종속성 분리 원칙.

30.

정적라우팅이란 무엇이며, 동적 라우팅이란 무엇이며

참고 답변:

정적 경로는 시스템 관리자가 설계하고 구축한 라우팅 테이블에 의해 지정된 경로입니다. 게이트웨이 수가 제한되어 있고 네트워크 토폴로지가 자주 변경되지 않는 네트워크에 적합합니다. 단점은 네트워크 상태 변화에 동적으로 적응할 수 없다는 점이다. 네트워크 상태가 변하면 네트워크 관리자가 라우팅 테이블을 수정해야 한다.
동적 라우팅은 라우팅 프로토콜에 의해 동적으로 구성됩니다. 라우팅 프로토콜은 자신이 소유한 라우팅 정보를 교환하여 라우팅 테이블의 내용을 실시간으로 업데이트합니다. 동적 라우팅은 네트워크의 토폴로지를 자동으로 학습하고 라우팅 테이블을 업데이트할 수 있습니다. 단점은 라우팅 브로드캐스트 업데이트 정보가 많은 양의 네트워크 대역폭을 차지한다는 것입니다.

31. Memcache 캐시를 사용해 본 적이 있나요? 그렇다면 어떻게 작동하는지 간략하게 설명해 주실 수 있나요?

Memcahce는 해시 테이블을 사용하여 모든 데이터를 메모리에 저장합니다. 각 데이터는 키와 값으로 구성됩니다. 특정 값에 액세스하려면 먼저 해당 값을 찾아 결과를 반환합니다. .

Memcahce는 LRU 알고리즘을 사용하여 만료된 데이터를 점차적으로 삭제합니다.

32. 인기 있는 Ajax 프레임워크를 나열해 보세요. Ajax의 구현 원리는 무엇이며, Ajax에서 json은 어떤 역할을 하는지 설명해주세요.

인기 있는 Ajax 프레임워크로는

jQuery, Prototype, Dojo 및 MooTools가 있습니다.

Ajax의 작동 원리는 한 페이지의 지정된 위치가 다른 페이지의 모든 출력 콘텐츠를 로드할 수 있다는 것입니다. 이러한 방식으로 정적 페이지도 데이터베이스에서 반환된 데이터 정보를 얻을 수 있습니다. 따라서 Ajax 기술은 전체 페이지를 새로 고치지 않고도 정적 웹 페이지가 서버와 통신할 수 있도록 하여 사용자 대기 시간을 줄여 네트워크 트래픽을 줄이고 고객 경험의 친근감을 향상시킵니다.

Ajax를 사용하는 경우 데이터 전송, 즉 서버에서 클라이언트로 데이터를 반환하는 작업이 포함됩니다. 서버와 클라이언트는 데이터를 처리하기 위해 서로 다른 스크립트 언어를 사용하며, 이를 위해서는 공통 데이터 형식인
XML과 json은 가장 일반적으로 사용되는 두 가지이며 json은 XML보다 간단합니다. 33. Myql의 트랜잭션 롤백 메커니즘 개요

트랜잭션은 사용자가 정의한 일련의 데이터베이스 작업입니다. 이러한 작업은 모두 수행되거나 전혀 수행되지 않습니다. 트랜잭션 롤백은 트랜잭션에 의해 완료된 데이터베이스에 대한 업데이트 작업을 취소하는 것을 의미합니다.

데이터베이스 내 서로 다른 두 테이블을 동시에 수정하고 싶은 경우, 트랜잭션이 아닌 경우 첫 번째 테이블 수정 시 두 번째 테이블 수정 과정에서 예외가 발생하여 수정이 불가능할 수 있습니다. 이때 두 번째 테이블만 수정이 가능하며 두 테이블은 아직 수정되지 않은 상태이고 첫 번째 테이블은 수정된 상태입니다. 그리고 이를 트랜잭션으로 설정하면 첫 번째 테이블이 수정되고 두 번째 테이블이 비정상적으로 수정되어 수정이 불가능한 경우 첫 번째 테이블과 두 번째 테이블이 수정되지 않은 상태로 돌아가는 것을 트랜잭션 롤백이라고 합니다.

위 내용은 최신 클래식 PHP 인터뷰 질문 요약(2부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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