>백엔드 개발 >PHP 튜토리얼 >수집할 가치가 있는 역사상 가장 포괄적인 PHP 인터뷰 질문 모음(인터뷰를 더욱 효율적으로 만들기)

수집할 가치가 있는 역사상 가장 포괄적인 PHP 인터뷰 질문 모음(인터뷰를 더욱 효율적으로 만들기)

慕斯
慕斯앞으로
2021-06-04 11:42:526758검색

이 기사는 역사상 가장 완벽한 PHP 기본 인터뷰 질문을 공유하고 기초를 강화하는 데 도움이 될 것입니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

수집할 가치가 있는 역사상 가장 포괄적인 PHP 인터뷰 질문 모음(인터뷰를 더욱 효율적으로 만들기)

1. PHP의 기본 부분

1. PHP 언어의 주요 장점 중 하나는 크로스 플랫폼입니다.

PHP 실행 환경의 최적 조합은 Apache+MySQL+PHP입니다. 이 실행 환경은 다양한 운영체제(예: Windows, Linux 등)에서 구성이 가능하고 운영체제에 의해 제한되지 않으므로 크로스라고 합니다. -platform

2. WEB 개발 시 데이터를 제출하는 방법은 몇 가지가 있나요? 차이점은 무엇입니까? Baidu는 어떤 방법을 사용하나요?

Get 및 post 메서드
차이점:
(1) URL 가시성: get 메서드 url 매개변수는 표시되고 post 메서드는 표시되지 않습니다

(2) 캐시 가능성: get 메서드는 캐시될 수 있지만 post 메서드는 캐시할 수 없습니다.

(3) 전송 데이터 크기: get의 일반적인 전송 데이터 크기는 2k~4k를 초과하지 않습니다(브라우저에 따라 한도는 다르지만 차이가 크지 않음). php.ini 구성 파일에 따라 설정되며 무한히 커질 수도 있습니다.

(4) 데이터 전송: get 메소드는 url 주소 표시줄 스플라이싱을 통해 매개변수를 전송하는 데 사용되며, post 메소드는 본문을 통해 데이터를 전송하는 데 사용됩니다.

권장 사항:
1. get 방법은 Post 방법보다 보안성이 낮으므로 기밀 정보가 포함되어 있으므로 Post 데이터 제출 방법을 사용하는 것이 좋습니다.
2. 데이터 쿼리에는 Get 방법을 사용하는 것이 좋습니다. ; 데이터 추가, 수정, 삭제에는 Post 메소드를 사용하는 것이 좋습니다.
Baidu에서 사용하는 get 메소드는 해당 URL에서 볼 수 있습니다.

3. 어떤 프레임워크, 템플릿 엔진, 시스템 등을 마스터하세요. of PHP

프레임워크: CI, Yii, Laravel 등과 같은 많은 프레임워크가 있습니다. 잠깐, 우리가 배운 것은 thinkphp입니다
템플릿 엔진: 많습니다. 교과서에 나와 있는 내용입니다. 배운 것은 똑똑하다
시스템: 강성 제품(uhome, supesite, discuzX 등), Empire System, DEDE(Dreamweaver), ecshop 등이 있습니다. 우리가 배운 것은 DEDECMS, Ecshop

4. 당신이 마스터한 웹 프론트엔드 기술은 무엇입니까?

p+CSS 웹 페이지 레이아웃, JavaScript, jQuery 프레임워크, 포토샵 이미지 처리에 능숙함

5. AJAX의 장점은 무엇인가요?

ajax는 부분 새로 고침을 달성하기 위해 javascript 또는 JQuery 프레임워크를 통해 구현할 수 있는 비동기 전송 기술로, 서버에 대한 부담을 줄이고 사용자 경험을 향상시킵니다.

6. 프로그램에 있어 보안은 매우 중요합니다. 개발 시 주의해야 할 보안 메커니즘이 무엇인지 알려주세요.

(1) 인증번호를 사용하여 등록기 침수를 방지하세요.

(2) 전처리, 매개변수 바인딩, 매개변수 필터링 및 이스케이프를 사용하여 SQL 주입을 방지합니다.

(3) 토큰을 사용하여 원격 제출을 방지하고 토큰을 사용하여 로그인 상태를 확인합니다.

7. 프로그램 개발 과정에서 프로그램의 운영 효율성을 높이는 방법은 무엇인가요?

(1) SQL 문을 최적화하고, 쿼리 문에서 select *를 사용하지 말고, 어떤 필드를 사용하여 하위 쿼리를 덜 사용하고 덜 퍼지 쿼리를 사용하여 대체할 수 있는지 확인하세요.

(2) 데이터 테이블에 인덱스를 생성합니다.

(3) 프로그램에서 자주 사용되는 데이터에 대한 캐시를 생성합니다(예: redis를 사용하여 데이터를 캐시하기, ob를 사용하여 동적 페이지를 정적화하는 등).

(4) mysql의 마스터-슬레이브 복제를 만들고 읽기와 쓰기를 분리합니다. (mysq 실행 효율성 및 쿼리 속도 향상)

(5) 로드 밸런싱에는 nginx를 사용합니다. (다형성 서버에 대한 접근 압력을 균등하게 분배)

8. PHP를 다른 데이터베이스와 함께 사용할 수 있나요?

PHP는 MYSQL 데이터베이스와 가장 잘 결합됩니다. 물론 PHP는 PostgreSql, SqlServer, Oracle, SqlLite 등과 같은 다른 데이터베이스와도 사용할 수 있습니다.

9. 요즘 프로그래밍에서는 MVC 3계층 구조가 자주 채택됩니다. MVC의 3계층 구조는 무엇인가요?

MVC의 세 가지 계층은 비즈니스 모델, 뷰 및 컨트롤러를 참조합니다. 컨트롤러 계층은 모델을 호출하여 데이터를 처리한 다음 데이터를 뷰 계층에 매핑하여 표시합니다.

장점은 다음과 같습니다. ① 코드 재사용성을 확보하고 코드 중복을 피할 수 있습니다. ② M과 V는 코드 분리를 실현하므로 동일한 프로그램에서 다른 표현을 사용할 수 있습니다.

10. json 데이터 형식을 이해하시나요?

JSON(JavaScript Object Notation)은 경량 데이터 교환 형식입니다. json 데이터 형식은 고정되어 있으며 여러 언어로 데이터를 전송하는 데 사용할 수 있습니다.
json 형식을 처리하는 PHP 함수는 json_decode(string $json [, bool $assoc])이며, 이는 JSON 형식 문자열을 받아 PHP 변수로 변환합니다. 매개변수 json은 디코딩할 json 문자열 형식 문자열입니다. assoc은 이 매개변수가 TRUE인 경우 객체 대신 배열을 반환합니다.
Json_encode: PHP 변수를 json 형식으로 변환합니다.

11. Print, echo, print_r의 차이점은 무엇인가요?

(1) echo와 print 모두 출력을 할 수 있다는 차이점이 있는데, echo는 함수가 아니고 반환 값도 없는 반면, print는 반환 값이 있는 함수이므로 상대적으로 그냥 출력하는 것이 더 빠릅니다. echo, print_r은 일반적으로 디버깅에 사용되는 변수 관련 정보를 인쇄하는 데 사용됩니다.
(2) print는 문자열을 인쇄하는 것입니다
(3) print_r은 배열 객체와 같은 복합 유형을 인쇄하는 것입니다

12. SESSION과 COOKIE의 차이점은 무엇인가요?

(1) 저장 위치 : 세션은 서버에 저장, 쿠키는 브라우저에 저장
(2) 보안 : 쿠키보다 세션 보안이 높음
(3) 세션은 '세션 서비스'이며, 서비스에 필요한 사항 쿠키는 켜둘 필요 없이 바로 사용하면 됩니다

13. PHP에서 배열을 처리하는 일반적인 함수는 무엇인가요? (함수의 '매개변수'와 '반환값'에 집중하세요)

(1) array()는 배열을 생성합니다

(2) in_array()는 요소가 배열에 있는지 확인합니다

(3) count ()는 배열을 반환합니다. 요소 수

(4) array_merge() 여러 배열을 하나의 배열로 병합

(5) array_diff() 두 개 이상의 배열 차이 비교

(6) array_intersect() 두 개 또는 두 개 가져오기 둘 이상의 배열의 교차점

(7) array_keys() 배열의 키 목록 가져오기

(8) array_values() 배열의 값 목록 가져오기

(9) array_unique() 중복 값 삭제 ​​in the array

(10) array_push()는 하나 이상의 요소를 배열의 끝에 삽입합니다(push)

(11) array_pop()은 배열의 마지막 요소를 팝하고 반환합니다(push)

(12 ) array_walk()는 사용자 정의를 사용합니다. 이 함수는 배열의 각 요소에 대해 콜백 처리를 수행합니다

14. PHP에서 문자열을 처리하는 일반적인 함수는 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)

(1) Trim()은 문자열 양쪽에 있는 공백 문자와 기타 문자를 제거합니다.

(2) strlen()은 문자열의 길이를 가져옵니다. 문자열

(3) mb_strlen() 문자열 길이를 가져옵니다(문자 인코딩을 지정할 수 있으며 길이는 중국어 문자열에 대해 계산됨)

(4) substr()은 문자열의 일부를 반환합니다.

(5) str_replace() 하위 문자열 대체

(6) str_repeat () 문자열 반복

(7) is_string() 변수가 문자열인지 확인

(8) str_shuffle () 문자열을 무작위로 섞기

(9) sprintf () return 형식화된 문자열을 기반으로 생성된 문자열(일반적으로 분할 후 데이터 테이블 이름을 얻는 데 사용됨)

(10) strstr() 문자열의 첫 번째 항목을 찾습니다.

(11) addlashes는 백슬래시를 사용하여 문자열을 인용합니다.

15. PHP에서 시간을 처리하기 위해 자주 사용되는 함수는 무엇인가요? (함수의 '매개변수'와 '반환값'에 집중하세요)

(1) date()는 현지 시간/날짜 형식을 지정합니다.

(2) getdate() 날짜/시간 정보를 가져옵니다.

(3) date_default_timezone_set()은 기본 시간대를 설정합니다.

(4) date_default_timezone_get()은 기본 시간대를 반환합니다.

(5) mktime()은 날짜의 Unix 타임스탬프를 반환합니다.

(6) strtotime() 문자열의 날짜 및 시간 설명을 Unix 타임스탬프로 구문 분석합니다.

(7) strftime() 지역 설정에 따라 현지 시간/날짜 형식을 지정합니다.

16 PHP에서 사용되는 일반적인 기능 데이터베이스를 처리하려면? (함수의 '매개변수'와 '반환값'에 집중하세요)

PHP 매뉴얼을 참고해서 주의 깊게 읽어주세요. 이것은 매우 중요합니다.

17 PHP에서 파일을 조작하기 위해 일반적으로 사용되는 기능은 무엇입니까? ? (함수의 '매개변수'와 '반환값'에 집중하세요)

(1) 파일 열기 fopen()

(2) 파일 읽기 fgets() 참고: file_get_contents()도 파일을 읽습니다

(3 ) 파일에 쓰기 fwrite(); 참고: file_put_contents()도 파일에 쓸 수 있습니다

(4) 파일 핸들을 닫습니다 fclose()

(5) 파일 이동/이름 바꾸기 rename()

(6) 파일 복사 copy ()

(7) vim 파일 생성 또는 touch

(8) 파일 삭제 unlink()

(9) 파일에 마지막으로 액세스한 시간 가져오기 fileatime()

(10 ) 파일이 마지막으로 수정된 시간 가져오기 filemtime ()

(11) 파일 크기 가져오기 filesize()

(12) 파일 형식 가져오기 filetype()

(13) 파일 세부 정보 가져오기 state()

(14) 디렉토리인지 확인 is_dir()

18. PHP에서 디렉토리(폴더)를 조작하는 일반적인 기능은 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)

(1) opendir() 디렉토리 열기

(2) readdir() 디렉토리 읽기

(3) rmdir() 디렉토리 삭제

(4 ) 디렉터리 핸들을 닫습니다.closedir()

(5) 디렉터리 mkdir()을 생성합니다()

(6) 경로 dirname()의 디렉터리 부분을 반환합니다.

(7) 현재 작업 디렉터리 가져오기 getcwd( )

(8) List 경로 scandir()에 파일과 디렉터리를 지정합니다.

2. 데이터베이스 부분

  1. 일반적인 관계형 데이터베이스 관리 시스템 제품은 무엇인가요?

답변: Oracle, SQL Server, MySQL, Sybase, DB2, Access 등

  1. SQL 언어에는 어떤 부분이 포함되나요? 각 섹션의 액션 키워드는 무엇입니까?

답변: SQL 언어는 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL) 및 데이터 쿼리(DQL)의 네 부분으로 구성됩니다.
데이터 정의: 테이블 생성, 테이블 변경, 테이블 삭제, 인덱스 생성/삭제 등
데이터 조작: 선택, 삽입, 업데이트, 삭제,
데이터 제어: 부여, 취소
데이터 쿼리: 선택

  1. 무결성 제약 조건 어떤 것을 포함합니까?

데이터 무결성은 데이터의 정확성과 신뢰성을 의미합니다.

포함:

(1) 엔터티 무결성: 테이블의 각 행이 테이블의 고유한 엔터티임을 규정합니다.

(2) 도메인 무결성: 테이블의 열이 값 범위, 정밀도 및 기타 규정을 포함하는 특정 데이터 유형 제약 조건을 충족해야 함을 의미합니다.

(3) 참조 무결성: 두 테이블의 기본 키와 외래 키의 데이터가 일관되어야 한다는 의미로, 테이블 간 데이터의 일관성을 보장하고 데이터베이스 확산 시 데이터 손실이나 의미 없는 데이터를 방지합니다.

(4) 사용자 정의 무결성: 다양한 관계형 데이터베이스 시스템에는 애플리케이션 환경에 따라 특별한 제약 조건이 필요한 경우가 많습니다. 사용자 정의 무결성은 특정 관계형 데이터베이스에 대한 제약 조건으로, 특정 응용 프로그램이 충족해야 하는 의미론적 요구 사항을 반영합니다.

  1. 거래란 무엇인가요? 그리고 그 특징은?

트랜잭션: 일련의 데이터베이스 작업이자 데이터베이스 애플리케이션의 기본 논리 단위입니다.

특징:

(1) 원자성: 즉, 모든 트랜잭션이 실행되거나 전혀 실행되지 않는 불가분성입니다.

(2) 일관성 또는 문자열 가능성. 트랜잭션을 실행하면 데이터베이스가 하나의 올바른 상태에서 다른 올바른 상태로 변환됩니다.

(3) 격리. 트랜잭션이 올바르게 커밋되기 전에는 트랜잭션에 의한 데이터 변경 사항이 다른 트랜잭션에 제공될 수 없습니다.

(4) 내구성. 트랜잭션이 올바르게 제출되면 그 결과는 데이터베이스에 영구적으로 저장됩니다. 트랜잭션 제출 후 다른 오류가 발생하더라도 해당 트랜잭션의 처리 결과는 저장됩니다.

간단한 이해: 트랜잭션의 모든 작업은 성공하거나 실패합니다.

  1. 자물쇠란 무엇인가요?

데이터베이스는 여러 사용자가 사용하는 공유 리소스입니다. 여러 사용자가 동시에 데이터에 액세스하면 여러 트랜잭션이 동시에 데이터베이스의 동일한 데이터에 액세스합니다. 동시 작업을 제어하지 않으면 잘못된 데이터를 읽고 저장하여 데이터베이스의 일관성이 손상될 수 있습니다.

잠금은 데이터베이스 동시성 제어를 달성하는 데 매우 중요한 기술입니다. 트랜잭션은 데이터 개체에 대해 작동하기 전에 먼저 시스템에 잠금 요청을 보냅니다. 잠금 후 트랜잭션은 데이터 개체에 대한 특정 제어권을 갖게 됩니다. 트랜잭션이 잠금을 해제하기 전에는 다른 트랜잭션이 데이터 개체를 업데이트할 수 없습니다.
기본 잠금 유형: 잠금에는 행 수준 잠금과 테이블 수준 잠금이 포함됩니다.

  1. 뷰란 무엇인가요? 커서란 무엇입니까?

뷰는 물리적 테이블과 동일한 기능을 가진 가상 테이블입니다. 뷰는 일반적으로 하나의 테이블 또는 여러 테이블의 행이나 열의 하위 집합으로 추가, 수정, 확인 및 작동될 수 있습니다. 뷰를 수정해도 기본 테이블에는 영향을 주지 않습니다. 다중 테이블 쿼리에 비해 데이터를 더 쉽게 얻을 수 있습니다.

Cursor: 쿼리 결과 집합을 단위로 효과적으로 처리합니다. 커서를 셀의 특정 행에 배치하여 결과 집합의 현재 행에서 하나 이상의 행을 검색할 수 있습니다. 결과 세트의 현재 행을 변경할 수 있습니다. 커서는 일반적으로 사용되지 않지만, 데이터를 하나씩 처리해야 할 때 커서는 매우 중요합니다.

  1. 저장 프로시저란 무엇인가요? 무엇을 부르나요?

저장 프로시저는 미리 컴파일된 SQL 문입니다. 장점은 모듈식 설계가 가능하다는 것입니다. 즉, 한 번만 생성하면 나중에 프로그램에서 여러 번 호출할 수 있습니다. 특정 작업에 SQL을 여러 번 실행해야 하는 경우 저장 프로시저를 사용하는 것이 간단한 SQL 문을 실행하는 것보다 빠릅니다. 명령 개체를 사용하여 저장 프로시저를 호출할 수 있습니다.

  1. 지수의 역할은 무엇인가요? 그리고 장점과 단점은 무엇입니까?

인덱스는 데이터베이스 검색 엔진이 데이터 검색 속도를 높이기 위해 사용할 수 있는 특수 쿼리 테이블입니다. 실생활에서 책의 목차와 매우 유사합니다. 책 전체를 조회하지 않고도 원하는 데이터를 찾을 수 있습니다. 인덱스는 고유할 수 있으며 인덱스를 생성하면 단일 열 또는 여러 열을 지정할 수 있습니다.

단점은 데이터 입력 속도가 느려지고 데이터베이스 크기도 커진다는 것입니다.

  1. 세 가지 패러다임을 대중적인 방식으로 이해하는 방법은 무엇입니까?

첫 번째 정규형: 1NF는 속성에 대한 원자성 제약 조건으로, 속성은 원자성이어야 하며 분해할 수 없습니다.

두 번째 정규형: 2NF는 레코드에 대한 고유성 제약 조건으로, 레코드에 고유 식별자가 있어야 합니다.

세 번째 정규형: 3NF는 필드 중복성에 대한 제약 조건입니다. 즉, 어떤 필드도 다른 필드에서 파생될 수 없으며 필드가 중복되지 않아야 합니다. .

  1. 기본 테이블이란 무엇인가요? 뷰란 무엇입니까?

기본 테이블은 독립적으로 존재하는 테이블입니다. SQL에서는 관계가 테이블에 해당합니다.

뷰는 하나 이상의 기본 테이블에서 파생된 테이블입니다. 뷰 자체는 데이터베이스에 독립적으로 저장되지 않고 가상 테이블입니다

  1. 뷰의 장점을 어떻게 설명할까요?

(1) 뷰는 사용자 작업을 단순화할 수 있습니다.

(2) 뷰를 사용하면 사용자가 여러 각도에서 동일한 데이터를 볼 수 있습니다.

(3) 뷰는 데이터베이스에 대해 어느 정도 논리적 독립성을 제공합니다. ) 뷰는 기밀 데이터에 대한 보안 보호를 제공할 수 있습니다.

    NULL은 무엇을 의미하나요?
  1. NULL 값은 UNKNOWN(알 수 없음)을 나타내며 ""(빈 문자열)을 나타내지 않습니다.

NULL 값과 비교하면 NULL 값이 생성됩니다.

어떠한 값도 NULL 값과 비교할 수 없으며 논리적으로 답변을 기대할 수 없습니다.

NULL 판단에는 IS NULL을 사용하세요

    기본 키, 외래 키, 인덱스의 차이점은 무엇인가요?
  1. 기본 키, 외래 키 및 인덱스의 차이점
정의:

기본 키 – 레코드를 고유하게 식별하고, 중복될 수 없으며, 비워 둘 수 없습니다.
외래 키 – 테이블의 외래 키가 기본입니다. 다른 테이블의 키, 외래 키는 중복이 있으면 null 값이 될 수 있습니다.
인덱스 – 이 필드에는 중복 값이 ​​없지만 null 값이 있을 수 있습니다.
기능:
기본 키 – 데이터 무결성을 보장하는 데 사용됩니다.
외부 키 – 다른 테이블과의 관계를 설정하는 데 사용됩니다.
인덱스 – 쿼리 정렬 속도를 향상시키는 것입니다.
숫자:
기본 키 – 기본 키는 하나만 있을 수 있습니다.
외래 키 – 테이블은 여러 개의 외래 키를 가질 수 있습니다.
인덱스 – 테이블 여러 개의 고유 인덱스를 가질 수 있습니다

    테이블의 필드가 특정 범위의 값만 허용하도록 하려면 무엇을 사용할 수 있습니까?
  1. 데이터베이스 테이블에 정의된 검사 제한을 사용하여 제한합니까? 열에 입력된 값입니다.

    SQL 문을 최적화하는 방법에는 어떤 것이 있나요? (몇개 선택)
  1. (1) Where 절에서 : Where 테이블은 다른 Where 조건보다 먼저 작성해야 하며, 최대 레코드 수를 필터링할 수 있는 조건은 마지막에 작성해야 합니다. Where 절.마침내 HAVING.

(2) IN을 EXISTS로 바꾸고 NOT IN을 NOT EXISTS로 바꿉니다.

(3) 인덱스 열에 계산을 사용하지 마세요

(4) 인덱스 열에 IS NULL 및 IS NOT NULL을 사용하지 마세요

(5) 쿼리를 최적화하려면 전체 테이블 스캔을 최대한 피해야 합니다. 먼저 고려해야 할 사항은 다음과 같습니다. where 및 order by와 관련된 열에 대한 인덱스를 만듭니다.

(6) where 절의 필드에 대해 null 값 판단을 피하십시오. 그렇지 않으면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행합니다.

(7) where 절의 필드에 표현식을 작성하지 마십시오. 이렇게 하면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행하게 됩니다.

    SQL 문에서 '상관 하위 쿼리'와 '비상관 하위 쿼리'의 차이점은 무엇인가요?
  1. (1) 상관되지 않은 하위 쿼리는 외부 쿼리와 독립적인 하위 쿼리로, 하위 쿼리는 총 한 번 실행되며, 실행 후 해당 값이 외부 쿼리로 전달됩니다.

(2) 해당 하위 쿼리의 실행은 외부 쿼리의 데이터에 따라 달라집니다. 외부 쿼리가 한 행을 실행할 때 하위 쿼리는 한 번만 실행됩니다.

상관되지 않은 하위 쿼리가 상관된 하위 쿼리보다 효율적입니다

    char와 varchar의 차이점은 무엇인가요?
  1. Char는 고정 길이 유형인 반면 varchar는 가변 길이 유형입니다.

차이점:

char(M) 유형의 데이터 열에서는 각 값이 M바이트를 차지합니다. 길이가 M보다 작으면 MySQL은 공백 문자를 사용하여 오른쪽을 보완합니다. (채워진 공백 문자는 검색 작업 중에 제거됩니다.)

varchar(M) 유형 데이터 열에서 각 값은 해당 길이를 기록할 수 있는 만큼의 바이트와 1바이트만 차지합니다(즉, 전체 길이는 L+1바이트입니다).

    Mysql 스토리지 엔진, myisam과 innodb의 차이점.
  1. MyISAM은 테이블 잠금이 자주 발생하는 애플리케이션에 적합하며 교착 상태가 지원되지 않습니다. 작은 데이터 및 작은 동시성에 적합

innodb는 트랜잭션을 지원하는 스토리지 엔진입니다. 삽입 및 업데이트 작업이 많은 애플리케이션에 적합합니다. 디자인이 합리적이라면 행 잠금입니다. 잠금) 빅데이터 및 대규모 동시성에 적합합니다.

    데이터 테이블 유형은 무엇입니까?
  1. MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV 등

MyISAM: 성숙하고 안정적이며 관리하기 쉽고 읽기 빠릅니다. 일부 기능(트랜잭션 등)은 테이블 수준 잠금을 지원하지 않습니다.

InnoDB: 트랜잭션, 외래 키 및 기타 기능, 데이터 행 잠금을 지원합니다. 많은 공간을 차지하고 전체 텍스트 색인 생성 등을 지원하지 않습니다.

    MySQL 데이터베이스는 하루에 50,000개 이상의 항목이 증가하며, 이를 최적화하는 방법은 무엇입니까?
  1. (1) 데이터베이스 구조를 잘 설계하고 부분적인 데이터 중복을 허용하며 조인 쿼리를 피하여 효율성을 높이십시오.

(2) 적절한 테이블 필드 데이터 유형과 스토리지 엔진을 선택하고 적절하게 인덱스를 추가합니다.

(3) mysql 마스터-슬레이브 복제 읽기-쓰기 분리를 수행합니다.

(4) 데이터 테이블을 테이블로 나누어 단일 테이블의 데이터 양을 줄이고 쿼리 속도를 향상시킵니다.

(5) redis, memcached 등과 같은 캐싱 메커니즘을 추가합니다.

(6) 자주 변경되지 않는 페이지에 대해 정적 페이지를 생성합니다(예: ob 캐싱).

(7) 효율적인 SQL을 작성합니다. 예를 들어 SELECT * FROM TABEL은 SELECT field_1, field_2, field_3 FROM TABLE로 변경됩니다.

  1. 트래픽이 많은 웹사이트의 경우, 페이지 방문 통계 문제를 해결하기 위해 어떤 방법을 사용하시나요?

(1) 서버가 현재 트래픽을 지원할 수 있는지 확인합니다.

(2) 데이터베이스 액세스를 최적화합니다.

(3) 사진의 핫링크 등 링크(핫링크)에 대한 외부 접근을 금지합니다.

(4) 제어 파일 다운로드.

(5) 로드 밸런싱을 수행하고 다른 호스트를 사용하여 오프로드합니다.

(6) 검색 통계 소프트웨어를 사용하여 방문 횟수를 파악하고 타겟 최적화를 수행합니다.

3. 객체지향 부분

1. 객체지향이란 무엇인가요? (이해해서 답변해주세요)

객체지향은 프로세스 지향, 즉 객체지향을 기반으로 한 개념입니다. 기능 등의 통합입니다. 객체를 통해 구현하고, 기능을 객체로 캡슐화하고, 객체가 특정 세부 사항을 구현하도록 합니다.

객체 지향에는 캡슐화, 상속, 다형성이라는 세 가지 주요 특성이 있습니다.

현재 순수 OO 언어는 주로 Java와 C#입니다. PHP와 C++도 OO를 지원합니다.

2. 비공개, 보호 및 공개 수정자의 액세스 권한을 간략하게 설명합니다.

private: 클래스 내부에서만 접근할 수 있는 비공개 멤버입니다.

protected: 보호된 멤버이며 클래스 및 상속된 클래스 내에서 액세스할 수 있습니다.

public: 공개 회원, 완전 공개, 접근 제한 없음.

3. 힙과 스택의 차이점은 무엇인가요?

스택은 컴파일 중에 할당되는 메모리 공간이므로 코드에서 스택의 크기를 명확하게 정의해야 합니다.

힙은 프로그램 실행 중에 동적으로 할당되는 메모리 공간을 기준으로 결정할 수 있습니다. 프로그램의 실행 상태 할당할 힙 메모리의 크기입니다.

4. XML과 HTML의 주요 차이점

다양한 문법 요구 사항:

(1) html에서는 대소문자를 구분하지 않고 xml에서는 엄격하게 구분합니다.

(2) HTML에서는 문맥에 단락이나 목록 키가 끝나는 위치가 명확하게 표시되는 경우

또는 유사한 닫는 태그를 생략할 수 있습니다. XML에서는 엄격한 트리 구조이므로 닫는 태그를 생략하면 안 됩니다.

(3) XML에서 일치하는 닫는 태그 없이 단일 태그가 있는 요소는 / 문자로 끝나야 합니다. 이런 식으로 파서는 닫는 태그를 찾지 않는다는 것을 알게 됩니다.

(4) XML에서는 속성 값을 따옴표로 묶어야 합니다. HTML에서 따옴표는 선택 사항입니다.

(5) HTML에서는 값 없이 속성 이름을 가질 수 있습니다. XML에서는 모든 속성에 해당 값이 있어야 합니다.

(6) XML 문서에서 공백 부분은 파서에 의해 자동으로 삭제되지 않지만 html은 공백을 필터링합니다.

태그의 차이점:

(1) html은 고유 태그를 사용합니다. xml에는 고유 태그가 없습니다.

(2) Html 태그는 사전 정의되어 있으며 XML 태그는 무료이며 사용자 정의 및 확장이 가능합니다.

다양한 기능:

(1) HTML은 데이터를 표시하는 데 사용되며 xml은 데이터를 설명하고 저장하는 데 사용되므로 지속성 매체로 사용할 수 있습니다! HTML은 데이터와 디스플레이를 결합하고 페이지에 데이터를 표시합니다. xml은 데이터와 디스플레이를 분리합니다. XML은 데이터의 내용에 중점을 두고 데이터를 설명하도록 설계되었습니다. HTML은 데이터의 모양에 중점을 두고 데이터를 표시하도록 설계되었습니다.

(2) xml은 HTML을 대체하지 않으며, xml과 html은 용도가 다른 두 언어입니다. XML은 HTML을 대체하기 위한 것이 아닙니다. 실제로 XML은 HTML을 보완하는 것으로 볼 수 있습니다. XML과 HTML의 목표는 서로 다릅니다. HTML의 디자인 목표는 데이터를 표시하고 데이터의 모양에 중점을 두는 반면, XML의 디자인 목표는 데이터를 설명하고 데이터의 내용에 중점을 두는 것입니다.

(3) XML에 대한 가장 좋은 설명은 다음과 같습니다. XML은 정보를 처리하고 전송하기 위한 크로스 플랫폼, 소프트웨어 및 하드웨어 독립적인 도구입니다.

(4) XML은 미래에는 어디에나 있을 것입니다. XML은 데이터 처리 및 데이터 전송을 위한 가장 일반적인 도구가 될 것입니다.

5. 객체지향의 특징은 무엇인가요?

주로 캡슐화, 상속, 다형성이 있습니다. 4가지 측면인 경우 추상화를 추가합니다.

캡슐화:
캡슐화는 소프트웨어 구성 요소가 우수한 모듈성을 갖도록 보장하는 기반입니다. 캡슐화의 목표는 소프트웨어 구성 요소의 높은 응집력과 낮은 결합을 달성하고 프로그램 상호 의존성으로 인한 변경의 영향을 방지하는 것입니다.

상속 :
클래스를 정의하고 구현할 때 기존 클래스를 기반으로 할 수 있으며, 이 기존 클래스에서 정의한 콘텐츠를 자체 콘텐츠로 사용할 수도 있고, 새로운 콘텐츠를 추가하거나 원래 메서드를 수정할 수도 있습니다. 특별한 요구에 더 적합하게 만드는 것이 상속입니다. 상속은 하위 클래스가 상위 클래스 데이터와 메서드를 자동으로 공유하는 메커니즘입니다. 이는 소프트웨어의 재사용성과 확장성을 향상시키는 클래스 간의 관계입니다.

다형성:
다형성은 프로그램에서 정의된 참조 변수가 가리키는 특정 유형과 참조 변수를 통해 발행되는 메소드 호출이 프로그래밍 중에 결정되는 것이 아니라 프로그램 실행 중에 결정되는 것을 의미합니다. 참조 변수가 가리키는 클래스 인스턴스 개체와 참조 변수가 발행한 메서드 호출을 구현하는 클래스는 프로그램 실행 중에 결정되어야 합니다.

추상화:
추상화는 어떤 사물의 유사성과 공통점을 찾아 클래스로 분류하는 것입니다. 이 수업은 이러한 사물의 유사성과 공통점만 고려하고 현재의 주제와 목표는 무시합니다. 관련 없는 측면은 현재 목표와 관련된 측면에 집중합니다. 예를 들어, 개미와 코끼리를 보고 그들이 얼마나 비슷한지 상상할 수 있다면 그것이 추상입니다.

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

추상 클래스: 인스턴스화할 수 없고 다른 클래스의 상위 클래스로만 사용할 수 있는 특수 클래스입니다. abstract 키워드를 사용하여 선언했습니다.

인터페이스: 특수 추상 클래스이며 인터페이스를 사용하여 선언된 특수 클래스입니다.

차이:

(1) 추상 클래스의 작업은 상속 키워드 확장을 통해 구현되는 반면, 인터페이스 사용은 구현 키워드를 통해 구현됩니다.

(2) 추상 클래스에는 데이터 캡슐화를 실현할 수 있는 데이터 멤버가 있지만 인터페이스에는 데이터 멤버가 없습니다.

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

(4) 추상 클래스의 메서드는 private, protected 및 public 키워드를 사용하여 수정할 수 있지만(추상 메서드는 private일 수 없음), 인터페이스의 메서드는 public 키워드로만 수정할 수 있습니다.

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

(6) 추상 클래스에는 멤버 메서드에 대한 구현 코드가 있을 수 있지만 인터페이스에는 멤버 메서드에 대한 구현 코드가 있을 수 없습니다.

7. 생성자는 무엇이고 소멸자는 무엇이며 그 기능은 무엇인가요?

생성자(메서드)는 객체가 생성된 후 객체가 자동으로 호출하는 첫 번째 메소드입니다. 이는 선언된 모든 클래스에 존재하며 특별한 멤버 메서드입니다. 그 기능은 일부 초기화 작업을 수행하는 것입니다. Php에서는 __construct()를 사용하여 생성자 메서드를 선언하는데 하나만 선언할 수 있습니다.

소멸자(메서드)는 생성자와 정반대입니다. 객체가 소멸되기 전에 자동으로 호출되는 마지막 메소드입니다. 파일 닫기 및 메모리 해제와 같은 객체를 파괴하기 전에 일부 특정 작업을 수행하는 데 사용되는 PHP5에 새로 추가된 콘텐츠입니다.

8. 부모 클래스의 메서드를 오버로드하는 방법(예제 포함)

오버로딩은 부모 클래스의 메서드를 재정의하는 것을 의미합니다. 즉, 하위 클래스의 메서드를 사용하여 부모 클래스에서 상속된 메서드를 대체하는 것입니다. 메소드 재정의라고 합니다.

상위 클래스 메소드를 재정의하는 핵심은 메소드 이름, 매개변수 및 반환 값 유형을 포함하여 하위 클래스의 상위 클래스에 동일한 메소드를 생성하는 것입니다. PHP에서는 메소드 이름만 동일해야 합니다.

9. 일반적으로 사용되는 마술 방법은 무엇입니까? 예를 들어

PHP에서는 두 개의 밑줄(__)로 시작하는 메소드가 매직 메소드로 예약되어 있으므로 기존 매직 메소드를 오버로드하지 않는 한 함수 이름이 __로 시작하지 않는 것이 좋습니다.

__construct()는 클래스를 인스턴스화할 때 자동으로 호출됩니다.

__destruct()는 클래스 객체가 사용될 때 자동으로 호출됩니다.

__set()은 정의되지 않은 속성에 값을 할당할 때 호출됩니다.

__get()은 정의되지 않은 속성이 호출될 때 호출됩니다.

__isset()은 isset() 또는 empty() 함수를 사용할 때 호출됩니다.

__unset()은 unset()이 사용될 때 호출됩니다.

__sleep()은 serialize를 사용하여 직렬화할 때 호출됩니다.

__wakeup()은 unserialize를 사용하여 deserialize할 때 호출됩니다.

__call()은 존재하지 않는 메서드를 호출할 때 호출됩니다.

__callStatic()이 존재하지 않는 정적 메서드를 호출합니다.

__toString()은 객체를 문자열로 변환할 때 호출됩니다. 에코와 같은.

__invoke() 객체를 메서드로 호출하려고 할 때 호출됩니다.

__set_state() var_export() 함수를 사용할 때 호출됩니다. 배열 매개변수를 허용합니다.

__clone()은 객체를 복사하기 위해 clone을 사용할 때 호출됩니다.

10. $this와 self, parent 세 개의 키워드는 각각 무엇을 의미하나요? 어떤 상황에서 사용되나요?

$이 현재 객체

자체 현재 클래스

현재 클래스의 상위 상위 클래스

$이것은 현재 클래스에서 사용됩니다. 속성과 메서드를 호출하려면 ->를 사용하세요.

self는 현재 클래스에서도 사용되는데 ::를 사용해 호출해야 합니다.

부모님은 수업에 사용됩니다.

11. 클래스에서 상수를 정의하는 방법, 클래스에서 상수를 호출하는 방법, 클래스 외부에서 상수를 호출하는 방법.

클래스에 포함된 상수도 멤버 상수입니다. 상수는 변하지 않는 수량이며 상수 값입니다.

const 키워드를 사용하여 상수를 정의하세요.

예: const PI = 3.1415326;

클래스 내부에 있든 클래스 외부에 있든 상수에 대한 액세스는 변수의 액세스와 다릅니다. ,

access 상수 형식은 클래스 이름에 호출할 범위 연산 기호(이중 콜론)를 더한 것입니다.

즉: 클래스 이름:: 클래스 상수 이름;

12. 범위 연산자::사용 방법은 무엇인가요? 어떤 상황에서 사용되나요?

(1) 클래스 상수 호출

(2) 정적 메서드 호출(정적으로 수정된 클래스 메서드)

13. __autoload() 메서드의 작동 원리는 무엇입니까?

이 마법 기능을 사용하기 위한 기본 조건은 클래스 파일의 파일명이 클래스 이름과 일치해야 한다는 것입니다.

특정 클래스를 인스턴스화하기 위해 프로그램을 실행할 때 인스턴스화 전에 클래스 파일이 도입되지 않으면 __autoload() 함수가 자동으로 실행됩니다.

이 함수는 인스턴스화된 클래스의 이름을 기반으로 클래스 파일의 경로를 검색합니다. 클래스 파일이 클래스 파일의 경로에 존재한다고 판단되면

는 클래스를 로드하기 위해 include 또는 require를 실행합니다. , 프로그램은 계속 실행됩니다. 이 경로에 파일이 없으면 오류 메시지가 표시됩니다.

자동 로딩 마법 기능을 사용하면 포함 또는 요구 기능을 많이 작성할 필요가 없습니다.

4. THINKPHP 부분

1. 일반적인 PHP 프레임워크

답변: thinkPHP, laravel, yii, ci 등

2. TP의 단일 항목 파일을 이해하는 방법은 무엇입니까?

ThinkPHP는 프로젝트 배포 및 액세스를 위해 단일 입구 모드를 채택합니다. 어떤 기능이 완료되든 프로젝트에는 통일된(그러나 반드시 유일한 것은 아님) 입구가 있습니다. 모든 프로젝트는 엔트리 파일에서 시작되며, 모든 프로젝트의 엔트리 파일은 유사하다고 해야 할까요.

항목 파일에는 주로 다음이 포함됩니다.

(1) 프레임워크 경로, 프로젝트 경로 및 프로젝트 이름 정의(선택 사항)
(2) 디버깅 모드 및 실행 모드에 대한 관련 상수 정의(선택 사항)
(3) 로드 Enter 프레임워크 항목 파일(필수)

3. ThinkPHP의 MVC 레이어링이란 무엇입니까? (이해)

MVC는 애플리케이션의 논리적 계층과 프레젠테이션 계층을 분리하는 방법입니다. ThinkPHP도 MVC 디자인 패턴을 기반으로 합니다. MVC는 추상적인 개념일 뿐 특별히 명확한 규정이 없습니다. ThinkPHP의 MVC 계층화는 대략적으로 다음과 같이 반영됩니다.

Model(M): 모델의 정의는 Model 클래스로 완성됩니다.

컨트롤러(C): 애플리케이션 컨트롤러(핵심 컨트롤러 앱 클래스)와 액션 컨트롤러는 모두 컨트롤러 역할을 맡고, 애플리케이션 컨트롤러는 스케줄링 제어를 담당합니다.

View(V): View 클래스와 템플릿 파일로 구성되어 있으며 템플릿이 100% 분리되어 독립적으로 미리보기 및 제작이 가능합니다.

하지만 사실 ThinkPHP는 M이나 V에 의존하지 않습니다. 즉, 모델이나 뷰 없이도 작동할 수 있다는 뜻입니다. 심지어 C에도 의존하지 않습니다. 이는 ThinkPHP에도 애플리케이션의 전체 일정을 담당하는 앱 컨트롤러인 Action 위에 마스터 컨트롤러가 있기 때문입니다. C가 없으면 뷰 V가 존재해야 합니다. 그렇지 않으면 더 이상 완전한 애플리케이션이 아닙니다.
전체적으로 ThinkPHP의 MVC 모델은 MVC 자체를 고수하기보다는 민첩한 개발 수단만을 제공합니다.

4. SQL을 최적화하는 방법은 무엇입니까? (학생들은 다음 설명을 이해한 후 자신의 이해를 바탕으로 일반적인 의미를 표현할 수 있습니다.)

(1) 올바른 스토리지 엔진을 선택하십시오.

MyISAM은 많은 수의 쿼리가 필요한 일부 응용 프로그램에 적합하지만 다른 응용 프로그램에는 적합하지 않습니다. 많은 쓰기에 좋습니다. 필드만 업데이트해도 테이블 전체가 잠기며 읽기 작업이 완료될 때까지 다른 프로세스, 심지어 읽기 프로세스도 작동할 수 없습니다. 또한 MyISAM은 SELECT COUNT(*)와 같은 계산 속도가 매우 빠릅니다.
InnoDB의 추세는 매우 복잡한 스토리지 엔진이 될 것이며 일부 소규모 애플리케이션의 경우 MyISAM보다 느릴 것입니다. 하지만 "행 잠금"을 지원하므로 쓰기 작업이 많을 때 더 좋습니다. 또한 트랜잭션과 같은 고급 애플리케이션도 지원합니다.

(2) 필드의 데이터 유형 최적화
열이 작을수록 속도가 빨라진다는 원칙을 기억하세요. 테이블에 몇 개의 열(예: 사전 테이블, 구성 테이블)만 있는 경우 INT를 기본 키로 사용할 이유가 없습니다. MEDIUMINT, SMALLINT 또는 더 작은 TINYINT를 사용하는 것이 더 경제적입니다. 시간을 추적할 필요가 없다면 DATETIME보다 DATE를 사용하는 것이 훨씬 좋습니다. 물론 확장을 위한 충분한 공간도 확보해야 합니다.

(3) 검색 필드에 인덱스 추가
인덱스가 반드시 기본 키나 유일한 필드를 의미하는 것은 아닙니다. 테이블에 항상 검색에 사용할 필드가 있는 경우 해당 필드를 인덱싱하는 것이 가장 좋습니다. 검색하려는 필드가 큰 텍스트 필드가 아닌 경우 전체 텍스트 인덱스를 만들어야 합니다.

(4) Select 사용을 피하세요. 데이터베이스에서 읽는 데이터가 많을수록 쿼리 속도가 느려집니다. 또한 데이터베이스 서버와 웹 서버가 두 개의 독립된 서버인 경우 네트워크 전송 부하도 증가합니다. 데이터 테이블의 모든 필드를 쿼리하려는 경우에도 와일드카드를 사용하지 않는 것이 좋습니다. 내장된 필드 제외 정의를 잘 활용하면 더욱 편리해질 수 있습니다.

(5) VARCHAR 대신 ENUM을 사용하세요
ENUM 유형은 매우 빠르고 컴팩트합니다. 실제로는 TINYINT를 보유하지만 문자열로 나타납니다. 이런 식으로 이 필드를 사용하여 선택 목록을 만드는 것이 매우 완벽해집니다. 예를 들어 성별, 민족, 부서, 상태 등 필드의 값이 제한되어 고정되어 있는 경우 VARCHAR 대신 ENUM을 사용해야 합니다.

(6) 가능하면 NOT NULL을 사용하세요.
NULL 값을 사용해야 하는 특별한 이유가 없는 한 필드를 항상 NOT NULL로 유지해야 합니다. NULL에는 실제로 추가 공간이 필요하며 비교를 수행하면 프로그램이 더 복잡해집니다. 물론 이것이 NULL을 사용할 수 없다는 의미는 아닙니다. 현실은 매우 복잡하며 여전히 NULL 값을 사용해야 하는 상황이 있을 것입니다.

(7) 고정 길이 테이블이 더 빨라집니다
테이블의 모든 필드가 "고정 길이"인 경우 전체 테이블이 "정적" 또는 "고정 길이"로 간주됩니다. 예를 들어 테이블에는 VARCHAR, TEXT, BLOB 유형의 필드가 없습니다. 이러한 필드 중 하나를 포함하는 한 테이블은 더 이상 "고정 길이 정적 테이블"이 아니며 MySQL 엔진은 이를 다른 방식으로 처리합니다.

고정 길이 테이블은 MySQL이 더 빠르게 검색하기 때문에 성능을 향상시킵니다. 이러한 고정 길이를 사용하면 다음 데이터의 오프셋을 쉽게 계산할 수 있으므로 자연스럽게 읽는 속도도 빨라집니다. 그리고 필드의 길이가 고정되어 있지 않으면 다음 필드를 찾으려고 할 때마다 프로그램이 기본 키를 찾아야 합니다.
또한 고정 길이 테이블은 캐시하고 다시 작성하기가 더 쉽습니다. 그러나 유일한 부작용은 고정 길이 필드가 일부 공간을 낭비한다는 것입니다. 고정 길이 필드는 사용 여부에 관계없이 너무 많은 공간을 필요로 하기 때문입니다.

5. ThinkPHP 3.0 아키텍처(코어 + 동작 + 드라이버)의 동작을 이해하는 방법은 무엇입니까?

(1) Core: 프레임워크의 핵심 코드이며, 없어서는 안되는 것입니다. TP 자체가 MVC 아이디어를 기반으로 개발된 프레임워크입니다.

(2) 동작: 동작은 ThinkPHP 새 버전의 아키텍처에서 결정적인 역할을 합니다. 시스템의 핵심에는 많은 태그 확장 비트가 설정되어 있으며 각 태그 위치는 차례로 자체 독립적인 동작을 실행할 수 있습니다. 이것이 행동 확장이 탄생한 방식이며, 많은 시스템 기능도 내장된 행동 확장을 통해 완성되며, 모든 행동 확장은 교체 가능하고 추가되어 기본 프레임워크 조립의 기반을 형성합니다.

(3) 드라이버: 데이터베이스 드라이버, 캐시 드라이버, 태그 라이브러리 드라이버, 템플릿 엔진 드라이버 및 외부 클래스 확장.

6. 기존 구성은 무엇인가요?

소위 기존 구성은 프레임워크와 함께 제공되는 구성 파일입니다. 이 파일은 핵심 프레임워크 디렉터리의 Convention.php에 있으며, 구성 내용은 다음과 같습니다. 이 파일은 프레임워크와 함께 제공되는 구성 파일이므로 실제 개발 프로세스에서 주로 참조 예제로 사용됩니다. 이 파일의 구성 내용을 거의 수정하지 않으며 필요에 따라 필드를 구성하는 경우가 더 많습니다. 규칙에 따라 모듈 또는 공통의 구성 내용을 사용자 정의하기 위한 정의 및 주석.

7. SQL 인젝션이란? (이해)

SQL 주입 공격은 해커가 데이터베이스를 공격하기 위해 사용하는 일반적인 방법 중 하나입니다.

일부 프로그래머는 코드를 작성할 때 사용자 입력 데이터의 적법성을 판단하지 않습니다. 인젝터는 양식에 데이터베이스 쿼리 코드를 입력하고 이를 제출할 수 있습니다. 프로그램은 제출된 정보를 종합하여 완전한 SQL 문을 생성하고 서버는 속여서 악성 SQL 명령을 실행하게 됩니다. 인젝터는 프로그램이 반환한 결과를 바탕으로 일부 민감한 데이터를 성공적으로 획득하고 심지어 전체 서버를 제어합니다. 이것이 바로 SQL 인젝션입니다.

8. ThinkPHP는 SQL 주입을 어떻게 방지하나요? (이해)

(1) 쿼리 조건에 배열을 사용하는 것이 더 안전한 방법입니다.

(2) 문자열 쿼리 조건을 사용해야 하는 경우 전처리 메커니즘을 사용하세요.

(3) 바인딩 정의를 사용하세요. 매개변수

(4) 데이터 필드 유형 확인을 켜면 숫자 데이터 유형을 강제로 변환할 수 있습니다. (필드 유형 확인은 버전 3.1부터 필수입니다.)

(5) 자동 확인 및 자동 완성 메커니즘을 사용하여 애플리케이션을 수행합니다. 특정 검증 사용자 정의 필터링

(6) 악의적인 데이터 입력을 방지하기 위해 필드 유형 확인, 자동 검증 및 자동 완성 메커니즘을 사용합니다.

9. 디버깅 모드를 활성화하는 방법은 무엇입니까? 디버그 모드의 이점은 무엇입니까?

디버깅 모드를 활성화하는 것은 매우 간단합니다. 항목 파일에 상수 정의 코드 한 줄만 추가하면 됩니다.

// 디버깅 모드를 켤 때는 개발 단계에서 배포 단계 설명을 켜거나 false로 설정하는 것이 좋습니다
정의('APP_DEBUG', true);
디버깅 모드의 장점은 다음과 같습니다. 오류 정보 및 디버깅 정보는 디버깅을 용이하게 하기 위해 자세히 기록됩니다. 템플릿 캐싱을 끄면 템플릿 수정 사항이 즉시 적용됩니다. SQL 로그를 기록하면 SQL 분석이 용이해지며 데이터 테이블 필드 수정은 다음의 영향을 받지 않습니다. 캐싱; 파일 케이스를 엄격하게 검사하면(Windows 플랫폼에서도) Linux 배포를 미리 발견할 수 있습니다. 질문; 개발, 테스트, 데모 및 기타 필요한 상황을 포함하여 개발 프로세스의 다양한 단계에서 편리하게 사용할 수 있습니다. 독립적인 프로젝트 구성 파일로 구성되어야 합니다.

10. TP에서는 어떤 구성 모드가 지원되나요? 우선 사항?

기존 구성->애플리케이션 구성->모드 구성->디버그 구성->상태 구성->모듈 구성->확장 구성->동적 구성

위는 로딩 순서입니다. 후속 구성은 동일한 이름으로 이전 구성을 덮어쓰므로(적용되지 않는 경우) 우선 순위는 오른쪽에서 왼쪽입니다.

11. TP의 URL 패턴은 무엇인가요? 기본값은 무엇입니까?

ThinkPHP는 일반 모드, PATHINFO, REWRITE 및 호환성 모드를 포함하여 URL_MODEL 매개변수를 설정하여 정의할 수 있는 네 가지 URL 모드를 지원합니다.
기본 모드는 PATHINFO 모드입니다. URL_MODEL을 1

12로 설정하세요. TP의 시스템 변수는 무엇인가요? 시스템 변수를 얻는 방법은 무엇입니까?

(1) 시스템 변수: ​ ​ ​​ ​​                                         에스                     ​​ ​​ 이자형 ​​ ​​ 아르 자형 ​​ ​​ 다섯 ​​ ​​ 이자형 ​​ ​​ 아르 자형 ​​ ​​ , , ​​ ​​ ​​ _섬기는 사람, ​ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ERVER , _ENV, $_POST, $_GET, ​ ​ ​​ ​​                                         아르 자형                     ​​ ​​ 이자형 ​​ ​​ 큐 ​​ ​​ 유 ​​ ​​ 이자형 ​​ ​​ 에스 ​​ ​​ 티 ​​ ​​ , , ​​ ​​ ​​ ​ _요청, ​ ​ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ EQUES T, _SESSION 및 $_COOKIE 변수 (2) 시스템 변수 가져오기: {KaTeX 구문 분석 오류: 'EOF'가 필요했지만 위치 25에 '}'가 있습니다. …ver.script_name} ̲ // 출력 _SERVER['SCRIPT_NAME'] 변수 {KaTeX 구문 분석 오류: 'EOF'가 필요하고 위치 22에 '}'가 있음: …session.user_id}̲ // 출력 _SESSION['user_id'] 변수 {KaTeX 구문 분석 오류: 'EOF'가 필요했지만 위치 21에 '}'가 있습니다. ….get.pageNumber}̲ // 출력 _GET['pageNumber'] 변수

{KaTeX 구문 분석 오류: 'EOF'가 필요했는데 위치 18에 '}'가 있습니다. …ink.cookie.name}̲ // ThinkPHP 프레임워크에서 _COOKIE['name'] 변수

D 함수를 출력합니다. M 기능의 차이점은 무엇입니까?

M 메소드는 사용자가 각 데이터 테이블에 대한 모델 클래스를 정의하지 않고도 모델을 인스턴스화합니다. D 메소드는 사용자 정의 모델 클래스가 존재하는 경우 사용자 정의 모델 클래스를 인스턴스화합니다. , Model 기본 클래스를 인스턴스화하기 위해 M 메서드가 자동으로 호출됩니다. 동시에 인스턴스화된 모델은 반복적으로 인스턴스화되지 않습니다(단일 사례 모드).

5. 똑똑한 템플릿 엔진

1. 컴파일과 캐싱의 차이점은 무엇인가요?

smarty의 컴파일 프로세스는 템플릿을 가져와 내부의 태그를 해당 PHP 코드로 바꾸는 것입니다. 실제로는 php와 html을 혼합하는 프로세스입니다. smarty의 캐시는 good 파일이 실행된 후 동시에 정적 html 페이지가 생성되므로 다시 접근하면 html 파일에 접근하게 되므로 효율성 측면에서 더 높습니다.

2. Smarty란 무엇인가요?

Smarty는 PHP로 작성된 PHP 템플릿 엔진으로, 프로그래머가 프로그램의 논리적 내용을 변경할 수 있도록 합니다. 이는 아티스트의 페이지 디자인에 영향을 미치지 않습니다. 이는 아티스트가 페이지를 다시 수정하는 경우 프로그램의 프로그램 논리에 영향을 미치지 않습니다. 이는 다중 사용자 공동 작업 프로젝트에서 특히 중요합니다. (멀티스타일 프로그램 개발도 쉽습니다.)

Smarty의 장점

(1) 빠르다: 다른 템플릿 엔진에 비해 빠릅니다.

(2) 컴파일 방식: smarty로 작성된 프로그램은 런타임 시 비템플릿 기술 PHP 파일로 컴파일해야 함

(3) 캐싱 기술: 사용자가 최종적으로 보는 HTML 파일을 정적 HTML 페이지로 캐시할 수 있음

(4) 플러그인 기술: smarty는 플러그인을 맞춤 설정할 수 있습니다.

smarty 사용에는 적합하지 않습니다

(1) 실시간 업데이트가 필요한 콘텐츠입니다. 예를 들어 재고 표시와 같이 데이터를 자주 업데이트해야 합니다.

(2) 소규모 프로젝트. 단순성으로 인해 아티스트와 프로그래머가 모두 필요한 소규모 프로젝트

3. 템플릿에 변수를 유지하려면 {$smarty}를 사용하세요

{

KaTeX 구문 분석 오류: 'EOF'가 필요했는데 '}'가 있습니다. 위치 16: smarty.get.page}̲ //php 스크립트에서 _GET[page]에 액세스하는 것과 유사합니다. {
KaTeX 구문 분석 오류: 'EOF'가 필요했는데 위치 16에 '}'이 있습니다: smarty.cookies. }̲ {smarty.post.} {
KaTeX 구문 분석 오류: 'EOF'가 필요했지만 위치 16에 '}'가 있습니다: smarty.session.}̲ {smarty.server.}

  1. in template php

5. Variable mediator

2018 PHP 클래식 인터뷰 질문 요약(업데이트됨) - PHP 인터뷰 질문

6. PHP가 mysql 데이터베이스를 쿼리할 때 중국어 결과를 쿼리할 때 잘못된 문자가 나타납니다. . 어떻게 해결하나요?

(1) 파일 메타(브라우저 파싱 설정 시)

(2) 데이터베이스 연결 시 인코딩 설정

(3) PHP 파일의 헤더 기능을 사용하여 인코딩 결정

7. 메커니즘

캐싱이 활성화되면 smarty는 동시에 정적 html 페이지를 생성합니다. 설정된 시간 내에 만료되지 않으면 다시 액세스하면 html 파일에 액세스하므로 읽을 필요성이 줄어듭니다. 데이터베이스이므로 효율성 측면에서 더 높습니다.

8. Smarty의 할당 및 템플릿 로드

$Smarty->할당(name,value)

$Smarty->display('index.html')

9. 그렇죠?

php와 html을 분리하기 위해 아티스트와 프로그래머는 서로 간섭하지 않고 각자의 업무를 수행할 수 있습니다.

10. 스마티의 주요 구성은 무엇인가요?

(1) smarty.class.php를 소개합니다.

(2) smarty 객체를 인스턴스화합니다.

(3) 기본 템플릿 경로를 다시 수정합니다.

(4) 기본 컴파일 파일 경로를 다시 수정합니다.

(5) 기본 구성 파일 경로를 다시 수정합니다.

(6) 기본 캐시 경로를 다시 수정합니다.

(7) 캐시 활성화 여부를 설정할 수 있습니다.

(8)은 왼쪽 및 오른쪽 구분 기호를 설정할 수 있습니다.

11. 스마티 사용 시 주의해야 할 사항은 무엇인가요?

Smarty는 MVC 개념을 기반으로 하는 템플릿 엔진으로, 페이지 프로그램을 뷰 레이어와 컨트롤 레이어의 두 부분으로 나눕니다.

즉, smarty 기술은 사용자 UI를 PHP 코드와 분리합니다.
이를 통해 프로그래머와 아티스트는 서로 간섭하지 않고 각자의 업무를 수행할 수 있습니다.

12.smarty 사용 시 다음 사항에 주의하세요.

(1) smarty를 올바르게 구성하세요. 주로 smarty 객체를 인스턴스화하고 smarty 템플릿 파일의 경로를 구성합니다.

(2) 할당 할당 및 표시를 사용하여 PHP 페이지에 페이지를 표시합니다.

(3) PHP 코드 조각과 모든 주석은 허용되지 않습니다. 스마트 템플릿 파일에는 변수와 함수가 구분 기호로 포함되어야 합니다.

6. 2차 개발 시스템(DEDE, ecshop)

1. 2차 개발의 이해

2차 개발은 간단히 말해서 기존 소프트웨어를 맞춤화 및 수정하고 기능을 확장한 다음 원하는 기능을 구현하는 것입니다. 일반적으로 원래 시스템의 커널은 변경되지 않습니다.

2, MVC

모델(model) 데이터 처리.
템플릿 표시를 봅니다.
컨트롤러가 프로세스를 제어합니다.
MVC의 개념은 무엇인가요? 각 레벨의 주요 임무는 무엇인가요?
MVC(Model-View-Controller)는 소프트웨어 디자인 패턴 또는 프로그래밍 아이디어입니다.
M은 모델 모델 레이어, V는 뷰 레이어(디스플레이 레이어 또는 사용자 인터페이스), C는 컨트롤러 레이어를 나타냅니다.
mvc를 사용하는 목적은 M과 V를 분리하여 하나의 프로그램이 서로 다른 사용자 인터페이스를 쉽게 사용할 수 있도록 하는 것입니다.
웹 사이트 개발에서
모델 레이어는 일반적으로 데이터베이스 테이블 정보를 추가, 삭제, 수정 및 확인하는 역할을 담당합니다.
뷰 레이어는 페이지 콘텐츠 표시를 담당합니다.
컨트롤러 레이어는 M과 V 사이를 조절하는 역할을 합니다. 컨트롤러 계층은 호출할 모델을 결정합니다.
실행 후 컨트롤러 계층은 결과를 할당할 뷰 계층을 결정합니다.

3. 설치 후 보조 개발 프로그램에 접속할 때 일부 경고 및 오류가 발생했습니다

오류에 따라 서버 구성 매개 변수 및 Baidu

4 기능, 템플릿 교체, 기능 추가 및 수정

사실 객체 지향 응용 프로그램에 사용되며 템플릿 대체는 smarty

5 어떤 보조 개발 도구를 사용했습니까?

Dedecms phpcms ecshop, 기본적으로 기초가 좋으면 배우는 데 문제가 없습니다.

6. PHP처럼 1차 개발을 하는 것이 좋을까요, 아니면 2차 개발을 하는 것이 좋을까요?

일반적으로 중소기업에서는 효율성을 위해 2차 개발에 cms 시스템을 사용합니다. 물론 한꺼번에 개발하고 싶다면 프레임워크 사용법을 알고 있고 시간이 충분하다면 괜찮습니다. 대기업에서는 저작권 문제를 피하기 위해 팀 단위로 개발합니다.

7. 2차 개발 과정에서 여러 클래스 간의 메소드 액세스는 어떻게 전달되나요?

클래스 상속이 아니라 객체 결합이고, 인스턴스화된 객체가 전역으로 전달됩니다

8. dedecs가 디렉토리를 변경하면 백그라운드에서 특정 항목을 입력할 수 없는 경우 어떻게 해결하나요?

배경 코어 설정을 현재 프로젝트 디렉터리 이름으로 변경하세요

9. dedecs의 커스텀 모델을 이해하시나요?

Dreamweaver 시스템에는 콘텐츠 모델이라는 개념이 있습니다. 다양한 콘텐츠 모델을 사용하여 다양한 콘텐츠 형태의 사이트를 구축할 수 있습니다. 이 시스템에는 일반 기사, 사진 앨범, 소프트웨어, 제품 및 분류된 정보가 포함됩니다. , 특별한 주제. 시스템과 함께 제공되는 모델을 통해 이를 사용하여 다양한 유형의 사이트를 구축할 수 있습니다. 예를 들어 아틀라스를 사용하여 사진 사이트를 구축하고 소프트웨어 모델을 사용하여 소프트웨어 다운로드 사이트를 구축할 수 있습니다.
물론 시스템과 함께 제공되는 위의 모델을 시스템 모델이라고 합니다. 사용자는 책, 음악 앨범 등과 같은 일부 모델을 직접 정의할 수 있습니다. 이러한 모델을 사용자 정의해야만 더 많은 콘텐츠 형식을 갖춘 사이트를 구축할 수 있습니다.
이는 현재 요구 사항의 변화에 ​​적응하기 위해 자동으로 테이블 구조를 추가하는 것과 같습니다

10. Dede의 개념, 템플릿 설계 및 사용 시 다음 개념을 이해해야 합니다

(1) 섹션(표지) 템플릿:
웹 사이트 홈페이지 또는 더 중요한 열 표지 채널에서 사용되는 템플릿을 의미하며 일반적으로 "index_identification ID.htm"으로 명명됩니다. 또한 사용자가 정의한 단일 페이지 또는 사용자 정의 태그도 선택적으로 섹션 템플릿 태그를 지원할 수 있습니다. 지원되는 경우 시스템은 콘텐츠를 출력하거나 특정 파일을 생성하기 전에 섹션 템플릿 태그 엔진을 사용하여 구문 분석합니다.

(2) 목록 템플릿:
웹 사이트의 특정 열에 있는 모든 기사 목록의 템플릿을 말하며 일반적으로 "list_identification ID.htm"이라는 이름을 사용합니다.

(3) 파일 템플릿 :
기사 템플릿 등 문서 보기 페이지의 템플릿을 나타내며, 일반적으로 "article_identification ID.htm"으로 명명됩니다.

(4) 기타 템플릿:
일반 시스템에는 일반적으로 홈 페이지 템플릿, 검색 템플릿, RSS, JS 컴파일 기능 템플릿 등의 템플릿이 포함됩니다. 또한 사용자는 템플릿을 사용자 정의하여 파일을 만들 수도 있습니다.

11. 디데에는 몇 개의 태그가 사용되나요?

목록, 콘텐츠 및 기타 태그는 해당 범위 내에서만 사용할 수 있고, 목록 태그는 목록에서만 사용할 수 있으며, 콘텐츠 태그는 콘텐츠 태그에서만 사용할 수 있습니다.
전역 태그는 모든 페이지에서 사용할 수 있습니다.

12. 일반적으로 사용되는 클래스 라이브러리에 익숙합니다.

(예: dedesql.class.php) 사용자 정의에 익숙합니다. 함수 라이브러리(extend .func.php); 프론트엔드 항목 파일(common.inc.php)에 익숙함

7. WeChat 공개 플랫폼 개발

1. WeChat 운영 메커니즘

사용되는 언어 공식 계정과 PHP 간 통신: Xml
Weixin.php에서 공개 계정 데이터를 받는 방법:
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//데이터 XML 데이터 받기

2.

WeChat은 현재 다음과 같은 7가지 기본 메시지 유형을 제공합니다.
(1) 문자 메시지(텍스트)
(2) 사진 메시지(이미지)
(3) 음성(음성)
(4) 비디오(비디오); 5) 위치
(6) 링크 메시지(link)
(7) 이벤트 푸시(event)
유형. 다양한 메시지 유형을 보낼 때 데이터 전송 형식을 마스터하세요

3. 전체 파일을 문자열로 읽어오는 함수는

File_get_contents

4. 일반적으로 사용되는 함수

xml 데이터를 개체로 구문 분석하는 함수입니다.

simplexml_load_string( )
문자열을 배열로 변환하는 함수는 ___explode________이고, 배열을 문자열로 변환하는 함수는 ____implode________입니다.
URL 문자열을 인코딩하는 문자열은 ____urlencode________입니다.

5. 기능

이에 대한 매뉴얼을 확인하실 수 있습니다.

6. 위챗 공식 계정은 왜 서비스를 제공할 수 없나요?

(1) 네트워크 이유, 데이터 인터페이스 이유
(2) 코드 오류, 이유 추측 방법
어디에서 수정했는지 확인하고 코드가 올바른지 확인하세요
데이터를 출력하여 살펴볼 수 있습니다. PHP를 사용하여 파일을 조작하세요
$myfile = fopen(“newfile.txt”, “w”);
                           티                    엑스                    티                    =                    "                    에이                    에이                    에이                    에이                    에이                    에이                    에이                    에이                    에이                    에이                    "                    ;                    에프                    승                    아르 자형                    나                    티                    이자형                    (                         txt="아아아아아아아아"; 쓰기(              ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ aaaa aaa";fwrite( 마이파일,                            티                    엑스                    티                    )                    ;                    에프                    기음                    엘                    영형                    에스                    이자형                    (                         txt); fclose(              txt)7. 맞춤 메뉴의 이벤트 푸시 Click 점프 링크 클릭 QR 코드를 스캔하여 이벤트 푸시 QR 코드를 스캔하여 푸시 및 팝업 시스템 사진 팝업 및 이벤트 게시 WeChat 사진 팝업 사진 게시를 위한 앨범 이벤트 위치 선택 이벤트 팝업 8. 토큰의 역할 WeChat 서버와 PHP 서버 간의 보안 확인에 사용되는 보안 메커니즘 확인9. API 인터페이스(예: 메뉴 작업)를 요청할 때 appid 및 secret 값을 전달해야 합니다. 애플리케이션의 인증 코드를 얻는 데 사용됩니다.


추천 학습: "
PHP 비디오 튜토리얼
"

위 내용은 수집할 가치가 있는 역사상 가장 포괄적인 PHP 인터뷰 질문 모음(인터뷰를 더욱 효율적으로 만들기)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제