>  기사  >  2019 봄 채용 PHP 면접 질문 (답변 포함)

2019 봄 채용 PHP 면접 질문 (답변 포함)

幸せな気
幸せな気앞으로
2019-05-23 13:58:3812555검색

이 인터뷰는 새로운 여행을 시작하고 세상을 이해하기를 바라는 것뿐만 아니라 자신의 단점을 발견하는 과정, 앞으로의 발전(학습) 방향을 결정하는 기회가 되기를 바랍니다. (첨부 : 면접 지식 포인트 마인드맵)

관련 추천 : "2019 PHP 면접 질문 요약(모음)"

PHP

php는 세상에서 가장 좋은 언어입니다! 반박은 허용되지 않습니다!

1. 기본

1, 세션과 쿠키의 차이점
세션은 서버 측에 저장되는 데이터 구조로, 사용자를 추적하는 데 사용됩니다. 상태에 따라 이 데이터는 클러스터, 데이터베이스 및 파일에 저장될 수 있습니다.

쿠키는 클라이언트가 사용자 정보를 저장하는 메커니즘이며 일부 사용자 정보를 기록하는 데 사용되며 세션을 구현하는 데도 사용됩니다. 편도.

2, PHP7을 사용해 보셨나요? 새로운 기능에 대해 알아보세요

PHP7은 성능, 새로운 연산자, 통합 변수 구문 등에서 획기적인 향상을 이루었습니다.

3, 매직 변수

__dir__이 무엇을 나타내는지 물었습니다. 응답 파일이 있는 디렉토리

4, Magic method

자주 묻는 질문인데, 갑자기 __invoke()
__construct(), __destruct(에 대해 물어보니 헷갈렸습니다. ), __call(), __callStatic() , __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 및 __debugInfo()

II. 데이터 구조 및 알고리즘

1, 스택 데이터 구조

팝 데이터 구조를 코드를 사용하여 구현할 수 있는 한

2, 버블 정렬

코드로 버블 정렬을 구현할 수 있는 한

3, 완전 이진 트리와 완전 이진 트리의 차이점

노드의 하위 두 수준만 2보다 작은 차수를 가질 수 있으며, 그리고 맨 아래에는 레이어의 노드가 레이어의 가장 왼쪽에 집중되어 있습니다. 특정 위치의 이진 트리는 완전한 이진 트리
이고 깊이가 h이고 노드가 2^h-1개인 이진 트리는 다음과 같습니다. 전체 바이너리 트리

3. 아키텍처 관련

1. Laravel과 ThinkPHP의 차이점은 무엇인가요?

불만을 말씀드리자면, laravel은 일부 프로젝트에 비해 다소 '무거울' 수 있습니다


2. Composer를 사용하여 자체 패키지를 게시해 보셨나요?(Composer 기반 PHP 모듈 개발)

아니요라고 대답했습니다. 방금알았어요

면접관이 말하길 프레임워크는 그들만의 것이라고 하더군요 Discuz 기반의 2차 개발 프레임워크입니다. 뛰어난 기반을 바탕으로 Composer 종속성 관리도 blabla


3에 도입되었습니다. MVC에 대한 이해를 이야기해 보겠습니다

프로젝트 설명 템플릿과 결합하여 뷰와 컨트롤러의 관계 및 기본 구성

IV. 보호

1, XSS 크로스 사이트 스크립팅 공격

2, DDOS 트래픽 공격

3, CSRF 사이트 간 요청 위조 공격
4. SQL 주입

프런트 엔드 양식에서 사용자 입력을 제어하거나 제한

매개 변수 및 데이터가 백엔드 등에서 전달될 때 필터링


5. 프로젝트

1 , 프로젝트에서 동시성 문제를 해결하는 방법

내 솔루션은 먼저 프런트 엔드에서 유효한 요청을 제어하는 ​​것입니다(예: 분당 한 번만 요청)

그런 다음 백엔드는 또한 유효하지 않은 요청을 필터링한 다음 구현을 위해 작업을 대기열에 넣습니다


면접관이 질문했습니다. 두 명의 사용자가 실제로 동시에 구매하는 경우 두 명의 사용자가 대기하게 됩니다. 완료되었으나 여전히 동일한 스레드를 사용하여 완료합니다. 다른 방법을 사용하여 완료하는 것을 고려해 보셨나요

저는 아니오라고 했고 그는 예라고 말했습니다 잠금 메커니즘을 사용하여 두 번째는 첫 번째가 완료될 때까지 기다립니다.


2. WeChat 결제의 구체적인 구현 프로세스

1. H5 페이지에서 결제 요청을 시작하고 결제 주문 생성을 요청합니다.

2 . 통합 주문 API 호출, 선불 주문 생성

3. JSAPI 페이지에서 호출되는 결제 매개변수를 생성하고 서명합니다.
4. WeChat 브라우저가 자동으로 결제를 활성화합니다. JSAPI 인터페이스 결제
5. 결제 확인
6. 비동기 통신 가맹점에 결제 결과를 알리면 가맹점에서 알림을 받고 확인 메시지를 보내드립니다
7. 결제 결과를 반환하고 표시합니다. 사용자에게 결제 정보 표시

3, 간단히 로그인 및 등록 기능 구현

각 프레임워크마다 서로 다른 측면을 고려하므로 각자의 이해에 따라 해당 코드를 작성하면 됩니다

4, 쇼핑몰 디자인 방법


먼저 알려드리겠습니다. B2C 쇼핑몰로 제한하고 데이터 테이블부터 시작해서 간단히 프런트엔드 및 백엔드 구현 로직 소개

MYSQL

Mysql 최적화는 기본적으로 최우선, 특히 테스트 기술
1. 기본

1, InnoDB와 MyISAM의 차이점은 무엇입니까

InnoDB는 트랜잭션 처리, 행 수준 잠금, 외래 키 지원, 다중 행 지원을 제공합니다. 형식
MyISAM은 테이블 수준 잠금, 전체 텍스트 인덱스 및 힙 테이블만 지원합니다.

2. 트랜잭션의 특성은 무엇입니까? 원자성, 일관성, 격리 및 내구성

3. 트랜잭션의 격리 수준


읽기 제출 읽기, 반복 읽기, 직렬화 가능

4, 테이블 필드 O_Id, OrderDate, OrderPrice, Customer가 있습니다. 주문 총액을 찾고 싶습니다. 금액이 2000

    SELECT Customer,SUM(OrderPrice) FROM 

Orders

    GROUP BY Customer

    HAVING SUM(OrderPrice)<2000

5 미만인 고객은 학생 테이블의 데이터를 쿼리하고, 60보다 큰 고객은 합격, 그렇지 않으면 불합격

점수 선택, 카테고리=Case

WHEN 점수 >=60 THEN '통과'

ELSE '실패' '
END
점수표에서

6, 모든 과목을 이수하지 않은 학생의 학번과 이름을 쿼리

    SELECT a.SNO ,a.SNAME  

    FROM student a  

    WHERE a.`SNO` NOT IN  

        ( SELECT b.`SNO` FROM SC b  

        GROUP BY b.`SNO` HAVING COUNT(*) =  

            ( SELECT COUNT(*)  FROM course)

        );

2. 최적화

1, "name='red'인 학생에서 * 선택 ", "선택하다 * from Student where name='blue'", 문 최적화

    select name from student where 

name=&#39;red&#39;
    union
    select 

name from student where name=&#39;blue&#39;

or 조건을 사용하면 myisam 테이블은 인덱스를 사용할 수 있지만 innodb는 사용할 수 없습니다.

Innodb는 OR를 UNION으로 대체합니다(인덱스 열에 적용 가능)



2, 일반적으로 데이터베이스를 최적화하는 방법

쿼리 캐시, EXPLAIN, (조인트) 인덱스, 고정 길이 정적 테이블 사용

서버

1. 보호

서버를 보호하는 방법

제한된 포트만 개방, 로그인 IP 제한, 로그인 계정 제한

책을 예약할 수 있는 질문이기도 하며, 에 따라 답변할 수 있습니다. 프로젝트

2. 계약

Get과 Post의 차이점은 무엇인가요?

Get의 매개변수는 URL에 포함되며 URL이 인코딩됩니다. 매개변수에는 ASCII 문자 문자 제한이 있습니다.

Post는 요청 본문을 통해 매개변수를 전달하며, 여러 가지 인코딩 방법이 있습니다


3. NginX

nginx 설정 시 PHP 스크립트 요청을 처리하는 방법

기본 구성은 처리를 위해 FastCGI로 전달하는 것입니다


4. Redis

1. 다음을 사용합니다. redis 어떤 데이터를 캐시해야 합니까

프로젝트에 따르면 자주 사용하는 일부 데이터를 캐시해야 합니다

2. Redis는 어떻게 유지되며 어떤 종류의 새로 고침 빈도를 구성해야 합니까?

aof 지속성을 구성하고 aof 파일을 1초마다 새로 고칩니다. default

3. Redis는 멀티 쓰레드인가요?

싱글 쓰레드(실제로는 멀티 쓰레드 233이라고 답변했습니다)

4. Redis를 하나의 마스터와 여러 개의 슬레이브로 구성하는 방법과 시간은 얼마나 걸리나요

당신 공식 Redis 클러스터 솔루션을 사용할 수 있지만 연습해 본 적이 없으므로 몇 주가 걸릴 수 있습니다. 완료

V. 코드 관리

git을 사용해 본 적이 있나요? 두 사람이 잘못된 코드를 제출했을 때 문제를 해결하는 방법

저는 git을 사용하여 코드를 제출했습니다. 이 경우 먼저 원격 코드를 이 코드로 가져올 수 있습니다. 그런 다음 충돌하는 코드 또는 Git 태그 내용을 수정한 다음 코드를 다시 제출하세요

​​​​​

Others

1. 이직한 이유

​​ 재치 있는 답변, 회사나 자신에 대해 조금 언급하는 것 Things돈은 적고 일은 멀다

2. 이상적인 팀

기술에 대한 열정, 적극적으로 문제 해결 및 협력

3. 심층적인 경력 계획

심층적인 프론트 엔드, 심층적인 백엔드 , 데이터 최적화 분석 및 수집, 서버 침투 blabla

4. 묻고 싶은 질문

보통 회사가 어떤 프로젝트를 가지고 있는지, 기술 구조가 있는지, 수익성이 있는지 등을 묻습니다.

회사마다 기술 스택이 다르고 우려 사항도 다릅니다. 때로는 차단 문제에 대한 구체적인 해결책을 묻는 경우도 있습니다. , 일부는 프로젝트 효율성에 더 많은 관심을 기울이고 일부는 서버 구축에도 관심을 기울이고 자체 프레임워크를 구축했는지 여부와 인기 있는 프레임워크에 대한 이해를 가지고 있습니다. , 그 과정에서 원하는 개발 방향을 찾을 수도 있습니다

Postscript

9개 업체에서 5일이면 괜찮을 것 같아요. 이력서에 있는 프로젝트에 대한 인터뷰를 진행합니다. 기술의 폭(경험한 프로젝트나 기술의 수)과 기술의 깊이(데이터 최적화, 프레임워크 이해 및 제작, 서비스)를 확인할 수 있습니다. 서버 공격 및 방어 침투), 프로젝트가 발전함에 따라 모두가 계속해서 기술을 연습하고 배울 수 있기를 바랍니다. (•ㅂ•)/♥ 서로 격려합시다 ~

첨부: 면접 지식 포인트 마인드맵

2019 봄 채용 PHP 면접 질문 (답변 포함)

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