> 백엔드 개발 > PHP 튜토리얼 > 2017php 클래식 인터뷰 질문

2017php 클래식 인터뷰 질문

不言
풀어 주다: 2023-03-24 15:20:02
원래의
1604명이 탐색했습니다.

이 글의 내용은 2017년 PHP 클래식 인터뷰 질문입니다. 이제 여러분과 공유합니다. 필요한 친구들이 참고할 수 있습니다.

1. PHP 언어의 주요 장점 중 하나는 크로스입니다. - 크로스 플랫폼이란 무엇입니까? 1. PHP 기본 사항:


PHP 운영 환경의 최적 조합은 Apache+MySQL+PHP입니다. 이 운영 환경은 Windows, Linux 등 다양한 운영 체제에서 구성할 수 있습니다. 운영체제 제한에 영향을 받지 않으므로 크로스 플랫폼이라고 합니다

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

Get과 post의 차이점: 1. Get은 서버에서 데이터를 얻고 post는 서버로 데이터를 전송합니다.

2 Get에서 전달한 값은 URL에 표시되고 Post는 URL에 표시되지 않습니다. url

4. Get으로 전달되는 값은 일반적으로 2KB 이내이며, post로 전달되는 값은 php.ini에서 설정할 수 있습니다.

5. 하지만 Post보다 실행 효율성이 높습니다

권장 사항:

1. get 방법은 Post 방법보다 보안성이 낮으므로 Post 데이터 제출 방법을 사용하는 것이 좋습니다.

2. 데이터 추가 및 수정에는 Get 메소드를 사용하는 것이 좋습니다.

Baidu에서 사용하는 get 메소드를 사용하는 것이 좋습니다. URL

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

프레임워크: 프레임워크 zendframe, CI, Yii 등이 많이 있습니다. 우리가 배운 것은 thinkphp

템플릿 엔진: 교과서에도 많이 있는데, 우리가 배운 것은 smarty

시스템: Kangsheng의 제품(uhome, supersite, discuzX 등), Empire System 등 많이 있습니다. , DEDE(Dreamweaver), ecshop 등 우리가 배운 것은 DEDECMS, Ecshop

4. 어떤 웹 프런트엔드 기술을 마스터했는지 알려주세요.

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

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

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

6 일련의 프로그램에 대한 보안입니다. 매우 중요합니다. 개발 중에 어떤 보안 메커니즘에 주의해야 하는지 알려주세요.

①원격 제출 방지, ②SQL 삽입 방지 및 특수 코드 필터링, ③등록 기계 플러딩 방지 및 인증 코드 사용

7.

① SQL 문을 최적화하고, 쿼리 문에서 select *를 사용하지 말고, 어떤 필드를 사용하여 하위 쿼리를 덜 사용하고, 퍼지 쿼리를 덜 사용하여 대체할 수 있는지 확인하세요. ③ 자주 사용하는 데이터에 대한 캐시 생성 프로그램을 확인하세요.

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

PHP는 MYSQL 데이터베이스와의 최고의 조합입니다. 물론, PHP는 MSSQL 등 다른 데이터베이스와도 함께 사용할 수 있습니다. PHP에는 MSSQL 운영을 위한 예약된 기능이 있어, 켜져 있는 동안만 사용할 수 있습니다.

9. 이제 프로그래밍에서는 MVC 3계층 구조를 자주 채택합니다. MVC는 어떤 3계층을 지칭하며 그 장점은 무엇인가요?

MVC의 세 가지 레이어는 각각 비즈니스 모델, 뷰, 컨트롤러를 참조합니다. 컨트롤러 레이어는 모델을 호출하여 데이터를 처리한 다음 데이터를 뷰 레이어에 매핑하여 표시합니다. ① 코드를 구현할 수 있습니다. 재사용성 및 생성 방지 코드 중복성 ②M과 V의 구현 코드가 분리되어 동일한 프로그램에서 다른 표현을 사용할 수 있습니다

10.

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의 차이점은 무엇입니까?

① echo와 print 모두 출력이 가능하다는 차이점이 있는데, echo는 함수가 아니고 반환 값도 없는 반면, print는 반환 값이 있는 함수이므로 상대적으로 echo만 출력하면 더 빠릅니다. , print_r은 일반적으로 디버깅에 사용되는 변수 관련 정보를 인쇄하는 데 사용됩니다.

② print는 문자열을 인쇄하는 것입니다.

3 print_r은 배열 객체와 같은 복합 유형을 인쇄하는 것입니다.

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

①저장 위치: 세션은 서버에 저장, 쿠키는 브라우저에 저장

②보안: 세션 보안은 쿠키보다 높음

③Session은 '세션 서비스'이며, 서비스는 다음과 같이 설정되어야 합니다. 쿠키는 활성화할 필요가 없으며 직접 사용할 수 있습니다.

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

①array()는 배열을 생성합니다. ②count()는 배열의 요소 수를 반환합니다. ③array_push()는 끝에 하나 이상의 요소를 삽입합니다. 배열의 (스택에 푸시); ④array_column()은 입력 배열의 단일 열 값을 반환합니다. ⑤array_combine()은 두 배열을 병합하여 새 배열을 생성합니다. ⑥array_reverse()는 배열을 역순으로 반환합니다. 8in_array()는 지정된 값이 배열에 있는지 확인합니다.

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

①trim()은 문자열 양쪽의 공백 문자와 기타 문자를 제거합니다. ②substr_replace()는 문자열의 일부를 다른 문자열로 바꿉니다. ) 문자열에 하위 문자열이 나타나는 횟수를 계산합니다. ④substr()은 문자열의 일부를 반환합니다. ⑤strtolower()는 문자열을 대문자로 변환합니다. 8strrchr()는 다른 문자열에서 마지막으로 나타나는 문자열을 찾습니다()는 다른 문자열에서 처음으로 나타나는 문자열을 찾습니다(대소문자 구분). strlen()은 문자열의 길이를 반환합니다. ; str_replace()는 문자열의 일부 문자를 대체합니다(대소문자 구분). print()는 문자열을 배열로 나눕니다. is_string()은 변수가 문자열인지 감지합니다. 문자열의 태그; mb_substr()은 중국어와 영어를 잘라내는 데 사용되는 함수입니다.

16. PHP 처리 시간에 일반적으로 사용되는 함수는 무엇입니까? (함수의 '매개변수'와 '반환값'에 집중하세요)

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

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

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

getdate()는 날짜/시간 정보를 반환합니다.

gettimeofday()는 현재 시간 정보를 반환합니다.

microtime()은 현재 시간의 마이크로초 수를 반환합니다.

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

strtotime()은 영어 텍스트 날짜 또는 시간 설명을 Unix 타임스탬프로 구문 분석합니다.

time()은 현재 시간의 Unix 타임스탬프를 반환합니다.

17. PHP가 데이터베이스를 처리하는 일반적인 기능은 무엇입니까? (함수의 '매개변수'와 '반환값'을 주목하세요)

PHP 매뉴얼을 참고하여 주의 깊게 읽어주세요. 이 항목은 매우 중요합니다

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

①파일 열기, ②파일 읽기, ④파일 쓰기, ⑤파일 닫기, ⑦파일 만들기 등 이 항목은 직장에서 캐시나 정적 파일을 생성하는 데 자주 사용됩니다. , PHP 매뉴얼을 참조하여 주의 깊게 확인하시기 바랍니다

19. PHP 운영 디렉토리(폴더)의 일반적인 기능은 무엇입니까? (함수의 '매개변수' 및 '반환 값'에 중점을 둡니다.)

①디렉토리 열기, ③디렉토리 읽기, ⑤디렉토리 수정, 등등. 중요 직장에서는 업로드된 파일의 디렉터리를 생성하거나 삭제하고, 캐시된 페이지와 정적 페이지의 디렉터리를 생성하거나 삭제하는 데 자주 사용됩니다. PHP 매뉴얼을 참조하고 주의 깊게 읽어보세요

맨 위로

2. 데이터베이스 부분

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

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

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

답변: SQL 언어는 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL) 및 데이터 쿼리(DQL)의 네 부분으로 구성됩니다.

데이터 정의: 테이블 생성, 테이블 변경, 테이블 삭제, 인덱스 생성/삭제 등

데이터 조작: 선택, 삽입, 업데이트, 삭제,

데이터 제어: 부여, 취소

데이터 쿼리: select

3. 무결성 제약 조건은 무엇인가요?

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

은 다음 네 가지 범주로 나뉩니다.

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

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

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

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

테이블 관련 제약 조건: 열 제약 조건(NOT NULL(null이 아닌 제약 조건)) 및 테이블 제약 조건(PRIMARY KEY, 외래 키, 검사, UNIQUE)을 포함합니다.

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

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

트랜잭션 특성:

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

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

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

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

또는 다음과 같이 이해하십시오.

트랜잭션은 논리적 작업 단위로 함께 바인딩된 SQL 문 그룹입니다. 문 작업이 실패하면 전체 작업이 실패하고 향후 작업이 롤백됩니다. 작업 전 상태로 이동하거나 노드가 있습니다. 무언가가 실행되거나 실행되지 않도록 하기 위해 트랜잭션을 사용할 수 있습니다. 그룹화된 문이 트랜잭션으로 간주되려면 ACID 테스트, 즉 원자성, 일관성, 격리성 및 내구성을 통과해야 합니다.

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

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

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

기본 잠금 유형: 잠금에는 행 수준 잠금과 테이블 수준 잠금이 포함됩니다.

6. 커서란 무엇입니까?

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

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

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

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

8. 인덱스의 역할은 무엇인가요? 그리고 장점과 단점은 무엇입니까?

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

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

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

두 번째 정규 형식: 2NF는 레코드에 대한 고유성 제약 조건입니다. 고유 ID, 즉 엔터티의 고유성 제3정규형: 3NF는 필드 중복성에 대한 제약입니다. 즉, 어떤 필드도 다른 필드에서 파생될 수 없으며 필드가 중복되지 않아야 합니다. .

10. 기본 테이블이란? 뷰란 무엇입니까?

답변: 기본 테이블은 독립적으로 존재하는 테이블입니다. SQL에서 관계는 테이블에 해당합니다. 뷰는 하나 이상의 기본 테이블에서 파생된 테이블입니다. 뷰 자체는 데이터베이스에 독립적으로 저장되지 않고 가상 테이블입니다.

11. 뷰의 장점을 설명해주세요.

답변: (1) 뷰는 사용자 작업을 단순화할 수 있습니다. (2) 뷰는 사용자가 여러 관점에서 동일한 데이터를 볼 수 있도록 합니다. (3) 뷰는 데이터베이스에 대해 어느 정도 논리적 독립성을 제공할 수 있습니다. 기밀 데이터에 대한 보안 보호.

12. NULL은 무엇을 의미하나요?

답변: NULL 값은 UNKNOWN(알 수 없음)을 나타내며 ""(빈 문자열)을 나타내지 않습니다. NULL 값과 비교하면 NULL 값이 생성됩니다. 어떤 값도 NULL 값과 비교할 수 없으며 논리적으로 답변을 얻을 것으로 기대할 수 없습니다.

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

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

기본 키, 외래 키 및 인덱스의 차이점

정의:

기본 키 - 레코드를 고유하게 식별하며, 중복 및 공백이 허용되지 않음

외래 키 - 테이블의 외래 키 키는 다른 테이블의 기본 키입니다. 외래 키는 중복되거나 null 값을 가질 수 있습니다. ​​

인덱스 - 이 필드에는 중복 값이 ​​없지만 null 값이 있을 수 있습니다

기능:

기본 키 - 데이터 무결성을 보장하는 데 사용

외래 키 - 다른 테이블과의 연결을 설정하는 데 사용

인덱스 - 쿼리 정렬 속도를 향상시키는 데 사용

숫자 :

기본 키 - 기본 키는 하나만 있을 수 있음

외래 키 - 테이블에 여러 개의 외래 키가 있을 수 있음

인덱스 - 테이블에 여러 개의 고유 인덱스가 있을 수 있음

14. 테이블의 필드가 특정 범위의 값만 허용하도록 하려면 무엇을 사용할 수 있습니까?

답변: 열에 입력된 값을 제한하기 위해 데이터베이스 테이블에 정의된 제한 사항을 확인하세요.

트리거를 사용하여 데이터베이스 테이블의 필드가 허용할 수 있는 값을 제한할 수도 있지만 이 방법을 사용하려면 테이블에 트리거를 정의해야 하며 이는 경우에 따라 성능에 영향을 미칠 수 있습니다.

15. SQL 문을 최적화하는 방법은 무엇입니까? (몇개 선택)

(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) null 값을 피해야 합니다. Where 절의 필드에 대한 판단 필드는 표현식 작업을 수행하며, 이로 인해 엔진은 인덱스 사용을 포기하고 전체 테이블 스캔을 수행합니다

16. '상관 하위 쿼리'와 '비상관 하위 쿼리'의 차이점은 무엇인가요? SQL 문에서?

답변: 하위 쿼리: 다른 쿼리 내에 중첩된 쿼리가 호출됩니다.

하위 쿼리를 내부 쿼리라고도 하며, 하위 쿼리가 포함된 문을 외부 쿼리(메인 쿼리라고도 함)라고 합니다.

모든 하위 쿼리는 상관 하위 쿼리와 비상관 하위 쿼리라는 두 가지 범주로 나눌 수 있습니다.

(1) 비상관 하위 쿼리는 외부 쿼리와 독립적인 하위 쿼리로, 하위 쿼리는 총 한 번 실행되며, 실행 후 해당 값이 외부 쿼리로 전달됩니다.

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

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

17. char과 varchar의 차이점은 무엇인가요?

답변: 고정 길이 유형인 반면 varchar는 가변 길이 유형입니다. 차이점은 다음과 같습니다.

char(M) 유형 데이터 열, 특정 값이 있는 경우 각 값은 M 바이트를 차지합니다. 길이가 M보다 작으면 MySQL은 오른쪽에 공백 문자를 추가합니다. (패딩 공백 문자는 검색 작업 중에 제거됩니다.) varchar(M) 유형 데이터 열에서 각 값은 해당 길이를 기록하는 데 충분한 바이트와 1바이트만 차지합니다. 즉, 총 길이는 L+1바이트입니다. ).

18. MySQL 스토리지 엔진, myisam과 innodb의 차이점.

간단한 표현:

MyISAM은 테이블 잠금이 빈번하고 교착 상태가 없는 애플리케이션에 적합합니다. 소규모 데이터, 소규모 동시성에 적합합니다. 트랜잭션을 지원하는 엔진, 삽입 및 업데이트 작업이 많은 애플리케이션에 적합합니다. 올바르게 설계하면 행 잠금입니다(가장 큰 차이점은 잠금 수준에 있음).

19. 데이터 테이블 유형은 무엇입니까?

답변: MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV 등

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

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

20. MySQL 데이터베이스는 하루에 50,000개 이상의 항목이 증가하는 출판 시스템의 저장소로 사용되며, 이를 어떻게 최적화할 것인가?

a. 데이터베이스 구조를 잘 설계하고, 부분적인 데이터 중복을 허용하고, 조인 쿼리를 피하여 효율성을 높이세요.

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

c. mysql 라이브러리의 마스터-슬레이브 읽기 및 쓰기가 분리되어 있습니다.

d. 일반 테이블을 찾아 단일 테이블의 데이터 양을 줄여 쿼리 속도를 높입니다.

e. memcached, apc 등과 같은 캐싱 메커니즘을 추가합니다.

f. 자주 변경되지 않는 페이지에 대해 정적 페이지를 생성합니다.

g. 효율적인 SQL을 작성하세요. 예를 들어 SELECT * FROM TABEL은 SELECT field_1, field_2, field_3 FROM TABLE로 변경됩니다.

21. 트래픽이 많은 웹 사이트의 경우 페이지 방문 통계 문제를 해결하기 위해 어떤 방법을 사용합니까?

답변: a. 서버가 현재 트래픽을 지원할 수 있는지 확인하세요.

b. 데이터베이스 액세스를 최적화합니다.

c. 사진 핫링크 등 링크(핫링크)에 대한 외부 접근은 금지됩니다.

d. 파일 다운로드를 제어합니다.

e. 다른 호스트를 사용하여 트래픽을 분산하세요.

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

맨 위로

3. 객체지향 부분

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

답변: 객체지향 OO = 객체지향 분석 OOA + 객체지향 OOP 프로그래밍; 대중적인 설명은 "모든 것이 객체이다"라는 것입니다. 이는 모든 것을 C와 같은 기능으로 분할하는 것이 아니라 자체 기능을 완성할 수 있는 독립적인 객체(단위)로 취급합니다.

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

2. private, protected, public 한정자의 접근 권한을 간략하게 설명합니다.

답변: private: Private 멤버는 클래스 내부에서만 접근할 수 있습니다.

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

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

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

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

힙은 프로그램 실행 중에 동적으로 할당되는 메모리 공간입니다. 프로그램의 크기에 따라 할당할 힙 메모리의 크기가 결정됩니다.

4. XML과 HTML의 주요 차이점

답변: (1) XML은 대문자와 소문자를 구분하지만 HTML은 그렇지 않습니다.

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

또는 와 같은 닫는 태그를 생략할 수 있습니다. XML에서는 닫는 태그를 생략하면 안 됩니다.

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

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

(5) HTML에서는 값 없이 속성 이름을 가질 수 있습니다. 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 세 개의 키워드는 각각 무엇을 의미하나요? 어떤 상황에서 사용되나요?

답변: $this 현재 객체

현재 클래스

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

$this는 현재 클래스에서 사용됩니다. 속성과 메서드를 호출하려면 -> .

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

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

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

답변: 클래스의 상수도 멤버 상수입니다. 상수는 변하지 않는 수량이며 상수 값입니다.

const 키워드를 사용하여 상수를 정의합니다.

예: const PI = 3.1415326;

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

상수에 액세스하는 형식은 클래스 이름과 호출할 범위 연산 기호(이중 콜론)입니다.

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

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

답변: 클래스 상수 호출

정적 메서드 호출

13. __autoload() 메서드는 어떻게 작동하나요?

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

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

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

가 include 또는 require를 실행합니다. 그러면 프로그램이 계속 실행됩니다. 이 경로에 파일이 없으면 오류 메시지가 표시됩니다.

자동 로딩 매직 기능을 사용하면 많은 include 또는 require 함수를 작성할 필요가 없습니다.

맨 위로

IV. ThinkPHP 부분

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

답변: thinkPHP

yii

ZendFramework

CakePhp

sy

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

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

프레임워크 경로, 프로젝트 경로 및 프로젝트 이름 정의(선택 사항)

디버깅 모드 및 실행 모드에 대한 관련 상수 정의(선택 사항)

프레임워크 항목 파일 로드(필수)

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) 올바른 스토리지 엔진을 선택하세요.

MySQL을 예로 들어 보겠습니다. MyISAM과 InnoDB라는 두 가지 스토리지 엔진이 있습니다. 각 엔진에는 장점과 단점이 있습니다.

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 아키텍처 3(코어 + 동작 + 드라이버)의 동작을 이해하는 방법은 무엇입니까?

답변: Core + Behavior + Driver

TP의 공식 약어: CBD

Core: 프레임워크의 핵심 코드이며, TP 자체가 이를 기반으로 개발된 프레임워크입니다. MVC 아이디어.

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

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

프레임, 즉 프레임워크입니다. 실제로 이는 특정 응용 프로그램의 반제품이며, 자신의 시스템을 완성하기 위해 선택하고 사용할 수 있는 구성 요소 집합입니다. 쉽게 말하면 남들이 만들어 놓은 무대를 이용해서 퍼포먼스를 하는 거죠. 게다가 프레임워크는 일반적으로 성숙하고 지속적으로 업그레이드되는 소프트웨어입니다.

6. 기존 구성은 어떻게 되나요?

규칙 구성 이전 페이지 다음 페이지 규칙은 구성보다 더 중요합니다. 이는 시스템이 따르는 중요한 아이디어입니다(시스템 디렉토리 아래에 있는 Confconvention.php). 대부분의 사용법에 따라 일반적으로 사용되는 매개변수는 기본적으로 구성됩니다. 따라서 애플리케이션 프로젝트의 구성 파일의 경우 기존 구성과 다르거나 새로운 구성 매개변수만 구성하면 되는 경우가 많습니다. 기본 구성을 완전히 채택하면 구성 파일을 정의할 필요도 없습니다.

기존 구성 파일은 시스템에 의해 자동으로 로드되므로 프로젝트에 로드할 필요가 없습니다.

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

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

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

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

(2) 문자열 쿼리 조건을 사용해야 하는 경우 전처리 메커니즘을 사용하세요. (3) 데이터 필드 유형 확인을 켜면 숫자 데이터 유형을 강제로 변환할 수 있습니다. (필드 유형 확인은 버전 3.1부터 필수입니다.)

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

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

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

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

//디버깅 모드 켜기

Define(' APP_DEBUG', true);

//프레임워크 항목 파일 로드

require './ThinkPHP/ThinkPHP.php';

개발 단계 완료 및 배포 후 프로덕션 환경에서는 디버그 모드만 삭제하면 됩니다. 배포 모드로 전환하는 코드를 정의하세요. 디버깅 모드를 켜면 시스템은 먼저 시스템의 기본 디버깅 구성 파일을 로드한 다음 프로젝트의 디버깅 구성 파일을 로드합니다. 디버깅 모드의 장점은 다음과 같습니다. 디버깅 정보가 자세히 기록됩니다.

템플릿 캐시를 끄면 템플릿 수정 사항이 즉시 적용됩니다.

SQL 분석을 용이하게 하기 위해 SQL 로그를 기록합니다. 데이터 테이블 필드 수정은 캐시의 영향을 받지 않습니다.

Linux 배포 문제를 미리 감지하려면 파일의 경우를 엄격하게 확인하세요.

다양한 단계에서 편리하게 사용할 수 있습니다. 필요한 상황에서 개발, 테스트 및 데모 등을 포함한 개발 프로세스의 다양한 응용 프로그램 모드는 독립적인 프로젝트 구성 파일을 구성할 수 있습니다.

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

ThinkPHP는 프로젝트 구성에서 고유한 계층적 구성 모드를 만들었습니다. 해당 구성 수준은 다음 항목에 반영됩니다.

기존 구성->프로젝트 구성->디버그 구성->그룹 구성-> 확장 구성->동적 구성

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

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

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

기본 모드는 PATHINFO 모드입니다. URL_MODEL을 1

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

답변: 시스템 변수를 얻는 방법:

Action에서 다음 메서드를 호출하면 됩니다.

$this->메서드 이름("변수 이름",["필터 메서드 " ],["기본값"])

13. ThinkPHP 프레임워크에서 D 함수와 M 함수의 차이점은 무엇인가요?

답변: M 메서드는 사용자가 모델을 인스턴스화할 때 각 데이터 테이블에 대해 모델 클래스를 정의할 것을 요구하지 않습니다. D 메서드는 사용자 정의 모델 클래스가 존재하는 경우 자동으로 모델 클래스를 감지할 수 있습니다. 존재하지 않는 경우 M 메서드가 자동으로 호출되어 Model 기본 클래스를 인스턴스화합니다. 동시에 인스턴스화된 모델은 반복적으로 인스턴스화되지 않습니다(단일 사례 모드).

위로

5. 스마트 템플릿 엔진

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

스마티의 컴파일 과정은 템플릿을 가져와 내부의 태그를 해당 PHP 코드로 바꾸는 것입니다. 이것은 실제로 php와 html을 혼합하는 과정입니다.

스마티의 캐시는 컴파일된 파일을 실행하는 동시에 정적 html 페이지를 생성하기 때문에 다시 접근하면 html 파일에 접근하게 됩니다. 효율성 측면에서는 더 높아야 합니다

2. Smarty란 무엇인가요? Smarty의 장점은 무엇인가요?

Smarty는 PHP로 작성된 PHP템플릿 엔진입니다. PHP 프로그램을 사용하는 목적 아티스트와의 분리 프로그래머는 아티스트의 페이지 디자인에 영향을 주지 않고 프로그램의 로직 내용을 변경할 수 있습니다. 아티스트가 페이지를 다시 수정해도 프로그램의 프로그램 로직에는 영향을 미치지 않습니다. 이는 다중 사용자 협력 프로젝트에서 특히 중요합니다. (멀티스타일 프로그램 개발도 쉽습니다.)

스마티의 장점

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

2. 컴파일 형식: smarty로 작성된 프로그램은 런타임 시 비템플릿 기술 PHP 파일로 컴파일해야 합니다.

3 캐싱 기술: 사용자가 최종적으로 보는 HTML 파일을 정적 HTML로 캐시할 수 있습니다. page

4. 플러그인 기술: 스마트하게 플러그인을 맞춤 설정할 수 있습니다.

스마티가 적합하지 않은 곳

1. 실시간 업데이트가 필요한 컨텐츠. 예를 들어, 재고 표시와 같이 빈번한 데이터 업데이트가 필요합니다. 2. 소규모 프로젝트. 단순성 때문에 아티스트와 프로그래머가 모두 필요한 소규모 프로젝트

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

{$smarty.get.page} //php 스크립트에서 $_GET[page]에 액세스하는 것과 유사

{smarty .cookies .}

{smarty.post.}

{smarty.session.}

{smarty.server.}

4. PHP에 액세스 템플릿 PHP 스크립트의

에는 두 가지 유형의 변수가 있습니다: 시스템 상수와 사용자 정의 상수 이 두 상수는 Smarty 템플릿에서도 액세스할 수 있으며 PHP에서 할당할 필요가 없습니다. {$smarty를 전달하기만 하면 됩니다. } 변수를 유지함으로써 상수의 값을 직접 출력할 수 있습니다. 템플릿에서 상수 출력의 예:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5. 변수 수정자

{$var|modifier1|modifier2| ....... . }

<{$str}>

<{$str|capitalize}><{*첫 글자를 대문자로 표시*}>

<{$str|upper}><{*모두 대문자*}>

<{$str|lower}><{*모두 소문자* }>

<{$str|lower|upper}><{*모두 대문자, 왼쪽에서 오른쪽으로 조정됨*}>

<{ $leg|truncate}><{*문자열 차단, 기본 80자*}>

<{$leg|truncate:10}><{*문자열 차단, 첫 번째 10, 3자 포함 *}>

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

1. 파일 속성(다른 이름으로 저장)

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

3. 데이터베이스 연결 시 인코딩 설정

4. PHP 파일의 헤더 기능을 사용하여 인코딩을 결정하세요

7. 캐시 메커니즘

캐싱이 켜져 있으면 smarty는 설정된 시간 내에 만료되지 않으면 다시 방문할 때 동시에 정적 HTML 페이지를 생성합니다. , html 파일에 액세스하게 되므로 데이터베이스를 읽을 필요성이 줄어들므로 효율성이 더 높아집니다.

8.smarty 할당 및 로드 템플릿

$Smarty->ass(name,value)

$Smarty->dis play('index.html ')

9. 마티 템플릿 기술의 용도는 무엇인가요?

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

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

1. smarty.class.php를 도입합니다.

3. 기본 템플릿 경로를 다시 수정합니다. 컴파일된 파일의 경로

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

6.

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

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

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

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

즉, smarty 기술은 사용자 UI와 컨트롤 레이어를 결합합니다. PHP 코드는 별도입니다.

이렇게 하면 프로그래머와 아티스트가 서로 간섭하지 않고 각자의 업무를 수행할 수 있습니다.

12.smarty를 사용할 때 다음 사항에 주의하세요.

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

2.php 페이지에서는 할당 할당 및 표시 페이지를 사용합니다.

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

A.{}

B.foreach

C. if else

E. 맨 위로

6. 개발 시스템(DEDE, ecshop): 1. 2차 개발에 대한 이해

2차 개발은 간단히 말해서 기존 소프트웨어에 맞춤형 수정을 하고, 기능을 확장하고, 그 기능을 구현하는 것입니다. 일반적으로 말하면 원래 시스템의 핵심은 변경되지 않습니다.

2. MVC

모델 데이터 처리.

템플릿 표시를 봅니다.

컨트롤러가 프로세스를 제어합니다.

MVC의 개념은 무엇인가요? 각 레벨의 주요 임무는 무엇인가요?

MVC(Model-View-Controller)는 소프트웨어 디자인 패턴 또는 프로그래밍 아이디어입니다.

M은 모델 모델 레이어를 나타내고, V는 뷰 레이어(표시 레이어 또는 사용자 인터페이스), C는 컨트롤러 레이어를 나타냅니다.

mvc를 사용하는 목적은 M과 V를 분리하여 하나의 프로그램이 서로 다른 사용자 인터페이스를 쉽게 사용할 수 있도록 하는 것입니다.

웹사이트 개발에서

모델 레이어는 일반적으로 데이터베이스 테이블 정보의 추가, 삭제, 수정, 확인을 담당하고,

뷰 레이어는 페이지 콘텐츠 표시를 담당합니다.

The 컨트롤러 레이어는 M과 V 사이에 있습니다. 컨트롤러 레이어는 어떤 모델 클래스를 호출할지 결정하고, 실행이 완료된 후 어떤 뷰 레이어에 결과를 할당할지 결정합니다.

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

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

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

실제로는 객체 지향 응용 프로그램의 사용이며 템플릿의 교체는 smarty의 사용과 유사합니다

5. 사용된?

Dedecms phpcms ecshop, 기본적으로 기초가 탄탄하다면 배우는 데 문제가 없을 것입니다.

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

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

7. 2차 개발 과정에서 여러 클래스 간의 메소드 접근은 어떻게 이루어지나요?

클래스 상속이 아니라 객체 조합이며, 인스턴스화된 객체는

global

을 통해 전달됩니다. 8. dedecms 디렉토리를 변경하면 항목이 배경이 입력됩니다. 가지 않으면 문제를 어떻게 해결합니까?

배경 코어 설정을 현재 프로젝트 디렉터리 이름으로 변경합니다.

9. Dedecms의 사용자 정의 모델을 이해합니까?

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)에 익숙함 프론트엔드 항목 파일(공통 .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) 링크 메시지(링크); ​​​​7) 이벤트 푸시(이벤트)

유형. 다양한 메시지 유형을 보낼 때 데이터 전송 형식을 마스터하세요

4. 전체 파일을 문자열로 읽는 기능은

File_get_contents

5、 일반적으로 사용된 함수

xml 데이터를 객체로 구문 분석하는 함수는

simplexml_load_string( )

문자열을 배열로 변환하는 함수는 ___ 폭발_________, 배열을 문자열로 변환하는 함수는 ____implode________입니다.

인코딩된 URL 문자열은 ____urlencode________입니다.

6 Sprintf 함수의 역할

이것을 확인할 수 있습니다 설명서에.

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

1. 네트워크 이유, 데이터 인터페이스 이유

2. 코드 오류, 이유 추측 방법

코드가 올바른지 수정한 위치를 확인하세요

데이터를 보고 살펴보세요. PHP를 사용하여 파일을 조작하세요

$myfile = fopen("newfile.txt", "w");

$txt ="aaaaaaaaa";

fwrite( $myfile, $ txt ;                                                  점프 링크를 클릭하세요

                       코드 푸시 이벤트 스캔

그리고 팝업

사진을 찍고 사진을 올릴 수 있는 시스템이 팝업되는 이벤트

위챗 앨범 포스트가 팝업되는 이벤트 사진

위치 선택기 팝업 이벤트

9. 토큰의 역할

WeChat 서버와 PHP 서버 간의 보안 확인에 사용되는 보안 메커니즘 확인 10. secret

API 인터페이스 요청(예: 메뉴 작업) 애플리케이션 인증 코드를 얻으려면 ​​​​appid와 secect 두 값을 전달해야 합니다. 8. 습득한 기술에 대한 설명:

1. PHP + MYSQL을 방향으로 사용하고 스마트 템플릿 엔진, ThinkPHP 프레임워크, WeChat 공개 플랫폼 개발, DEDE, ecshop 및 기타 보조 개발 시스템에 능숙하며 특정 능력을 갖추고 있습니다. 데이터베이스 측면에 대한 이해, MYSQL, MSSQL 및 기타 데이터베이스에 능숙

Linux PHP 개발에 익숙함 2. 프런트 엔드 기술: p+CSS 웹 페이지 레이아웃, javascript, JQuery 프레임워크에 능숙 , AJAX 기술, 포토샵 이미지 처리

3. 1년간의 프로젝트 개발 경험, smarty를 사용하여 'XXXXXXXX' 개발, ThinkPHP를 사용하여 'XXXXXXXX' 개발, WeChat 공개 플랫폼을 사용하여 '고용 서비스 네트워크'의 공개 계정 개발, DreamWeaver 시스템을 사용하여 기업 웹사이트 개발,

관련 추천:

2017 최신 PHP 클래식 면접 질문 요약

PHP 면접 질문 요약

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

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