> 백엔드 개발 > PHP 튜토리얼 > PHP 면접 질문 요약 공유

PHP 면접 질문 요약 공유

小云云
풀어 주다: 2023-03-22 09:48:02
원래의
1470명이 탐색했습니다.

이 기사는 주로 PHP 면접 질문 요약을 공유하므로 도움이 되기를 바랍니다.

1. 객체지향이란 무엇인가요? 주요 기능은 무엇입니까?

객체 지향은 프로그램의 재사용성을 향상시키고 프로그램 구조를 보다 명확하게 만드는 프로그램 설계 방법입니다. 주요 기능: 캡슐화, 상속, 다형성.

2. SESSION과 COOKIE의 차이점은 무엇인가요? 프로토콜의 이유와 기능을 설명해 주세요.

1. HTTP Stateless 프로토콜은 동일한 사용자가 다른 페이지를 요청하는지 구분할 수 없습니다. 동일한 사용자에 속한 것으로 간주됩니다.

2. SESSION은 서버측에 저장되고 COOKIE는 클라이언트측에 저장됩니다. 세션은 상대적으로 안전합니다. 쿠키는 특정 수단으로 수정될 수 있으며 안전하지 않습니다. 세션은 전달을 위해 쿠키를 사용합니다.

쿠키를 비활성화하면 세션을 정상적으로 이용하실 수 없습니다. 세션의 단점: 서버 측에 저장되며, 각 읽기는 서버에서 읽혀지므로 서버의 리소스를 소모합니다. 세션은 서버 측의 파일이나 데이터베이스에 저장되며, 기본적으로 파일 경로는 PHP 구성 파일의 session.save_path에 지정됩니다. 세션 파일은 공개됩니다.

3. HTTP 상태의 302, 403, 500 코드는 무엇을 의미하나요?

1, 2, 3, 4, 5가지 원칙: 1. 메시지 시리즈 2. 성공 시리즈 3. 리디렉션 시리즈 4. 요청 오류 시리즈 5. 서버 측 오류 시리즈

302: 임시 전송이 성공했습니다. 요청한 콘텐츠가 완료되었습니다. 새 위치로 전송됨 403: 접근 금지 500: 서버 내부 오류 401은 승인되지 않음을 의미합니다.

4. Linux

Tar.gz:

Package: tar czf file.tar.gz file.txt

Decompress: tar xzf file.tar.gz

Bz2:

에서 압축 패키지를 생성하고 압축을 푸는 명령 패키지: bzip2 [-k] 파일

압축 해제: bunzip2 [-k] 파일

Gzip(파일만, 원본 파일은 보관하지 않음)

패키지: gzip file1.txt

압축 해제: gunzip file1.txt.

Zip: -r 디렉토리 압축

: zip file1.zip file1.txt

Decompress: unzip file1.zip

5 데이터 유형의 의미를 적어주세요(int char varchar datetime text). 나에게 varchar에 대해 그리고 char의 차이점은 무엇입니까?

Int Integer char 고정 길이 문자 Varchar 가변 길이 문자 Datetime Datetime 유형 Text 텍스트 유형 Varchar와 char char의 차이점은 고정 길이 문자 유형이 얼마나 많은 공간을 차지하느냐 하는 것입니다. Varchar는 가변 길이 문자 유형으로, 내용만큼 공간을 차지하므로 공간을 효과적으로 절약할 수 있습니다. varchar 타입은 가변형이므로 데이터 길이가 변경되면 서버에서 추가 작업을 수행해야 하므로 char 타입에 비해 효율성이 떨어집니다.

6. MyISAM과 InnoDB의 기본 차이점은 무엇인가요? 인덱스 구조는 어떻게 구현되나요?

MyISAM 유형은 트랜잭션 및 테이블 잠금을 지원하지 않으며 조각화되기 쉽습니다. 자주 최적화해야 하며 읽기 및 쓰기 속도가 더 빠른 반면, InnoDB 유형은 트랜잭션, 행 잠금을 지원하고 충돌 복구 기능을 제공합니다. 읽기 및 쓰기 속도는 MyISAM보다 느립니다.

인덱스 생성: 경고 테이블 이름 추가 인덱스(`필드 이름`)

7. 쿠키를 사용하지 않고 클라이언트에 쿠키를 보냅니다.

이해: session_start()가 활성화되면 COOKIE가 활성화될 때 상수 SID가 생성됩니다. 켜져 있으면 상수는 비어 있습니다. COOKIE가 닫히면 PHPSESSID 값이 이 상수에 저장됩니다. SESSIONID 값을 전달하기 위해 URL 뒤에 SID 매개변수를 추가하면 클라이언트 페이지가 SESSION의 값을 사용할 수 있습니다. 클라이언트가 COOKIE를 열고 서버가 SESSION을 열 때. 브라우저가 첫 번째 요청을 하면 서버는 SESSIONID를 저장하기 위해 브라우저에 COOKIE를 보냅니다. 브라우저가 두 번째 요청을 하면 기존

8.isset()과empty()의 차이점은 Isset 판단입니다. 변수가 존재하는지 여부는 여러 변수를 전달할 수 있으며, 변수 중 하나가 존재하지 않으면 false를 반환하고, 비어 있으면 변수 하나만 전달할 수 있습니다. 비어 있으면 true를 반환합니다.

9. 페이지 간에 변수를 전달하는 방법(최소 두 가지 방법)? GET, POST, COOKIE, SESSION, 숨겨진 양식

1. URL과 일치하는 정규식을 작성하세요.

'/^(https?| ftps ?)://(www).([^./]+).(com|cn|org)(/[w-./?%&=]*)?/i'

2. 일반적인 정렬 알고리즘을 작성하고 PHP를 사용하여 버블 정렬을 구현하고 $a = array() 배열을 작은 것부터 큰 것까지 정렬하세요.

일반적인 정렬 알고리즘: 버블 정렬, 퀵 정렬, 단순 선택 정렬, 힙 정렬, 직접 삽입 정렬, 힐 정렬, 병합 정렬.

버블 정렬 방법의 기본 아이디어는 정렬할 레코드의 키워드를 뒤에서 앞으로(역순으로) 여러 번 스캔하여 인접한 두 키워드의 순서가 일치하지 않는 것으로 확인되는 것입니다. 정렬에 필요한 규칙에 따라 두 개의 인접한 키워드가 정렬됩니다. 이렇게 작은 키워드가 포함된 레코드는 마치 물 속에 위로 떠다니는 거품처럼 뒤에서 앞으로 점점 이동하게 되므로 이 알고리즘을 버블 정렬 방법이라고도 합니다.

// 冒泡排序法
Function mysort($arr){
         For($i=0;$i<count($arr); $i++){
                  For($j=0; $j<count($arr)-1-$i; $j++){
                           If($arr[$j]> $arr[$j+1]){
                                    $tmp=$arr[$j];
                                    $arr[$j]=$arr[$j+1];
                                    $arr[$j+1]=$tmp;
            }
       }
   }
         Return$arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));
로그인 후 복사

3. PHP에서 값 전달과 참조 전달의 차이점을 설명해주세요. 언제 값으로 전달하고 언제 참조로 전달합니까?
값으로 전달: 함수 범위 내의 값에 대한 모든 변경 사항은 함수 외부에서 무시됩니다.

참조로 전달: 함수 범위 내의 값에 대한 모든 변경 사항은 함수 외부의 수정 사항도 반영합니다.

장점 및 단점: 통과 값으로 PHP는 값을 복사해야 합니다. 특히 큰 문자열과 개체의 경우 비용이 많이 드는 작업이 될 수 있습니다. 참조로 전달하면 값을 복사할 필요가 없으므로 성능 향상에 좋습니다.


PHP에서 error_reporting 기능은 무엇인가요? ????

정규식(Regular Expression)을 이용하여 이메일의 형식이 올바른지 확인하는 함수를 작성해 주세요.

if(isset($_POST[&#39;action&#39;]) && $_POST[&#39;action&#39;]==’submitted’){
         $email=$_POST[&#39;email&#39;];
         if(!preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+){1,3}$/”,$email)){
                  echo“电子邮件检测失败”;
         }else{
                  echo“电子邮件检测成功”;
         }
}
로그인 후 복사

범용이 가능한 2차원 배열 정렬 알고리즘 함수를 작성하세요. PHP 내장 함수(array_multisort())를 호출할 수 있습니다.

//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
         if(!is_array($arr)) {
                  return false;
         }
         $keysvalue =array();
         foreach($arr as$key => $val) {
                  $keysvalue[$key] = $val[$keys];
         }
         if($order == 0){
                  asort($keysvalue);
         }else {
                  arsort($keysvalue);
         }
         reset($keysvalue);
         foreach($keysvalueas $key => $vals) {
                  $keysort[$key] = $key;
         }
         $new_array =array();
         foreach($keysortas $key => $val) {
                  $new_array[$key] = $arr[$val];
         }
         return $new_array;
}
로그인 후 복사

공백을 간격으로 사용하여 'Apple Orange BananaStrawberry' 문자열을 분할하세요. 배열을 형성하세요$ 과일,

* 배열의 모든 요소는 소문자이며 알파벳 순서로 정렬됩니다

class sort {
         private $str;
         public function__construct($str) {
                  $this->str=strtolower($str);
         }
         private functionexplodes() {
                  if(empty($this->str)) returnarray();
                  $arr=explode("",$this->str);
                  return is_array($arr)?$arr:array($arr);
         }
         public functionsort() {
                  $explode=$this->explodes();
                  sort($explode);
                  return $explode;
         }
}
$str=&#39;Apple Orange Banana Strawberry&#39;;
$sortob=new sort($str);
var_dump($sortob->sort());
로그인 후 복사

사용자가 $string 문자열을 입력하려면 $string에는 0보다 큰 숫자만 포함될 수 있어야 하며 영어 쉼표를 사용하세요. 정규식 확인이 요구 사항을 충족하지 않는 $string에 대한 오류 메시지를 반환합니다.

class regx {
         public staticfunction check($str) {
         if(preg_match("/^([1-9,])+$/",$str)){
                  return true;
         }
         return false;
         }
}
$str="12345,6";
if(regx::check($str)) {
echo "suc";
} else {
echo "fail";
}
로그인 후 복사

Windows 플랫폼, Apache Http Server를 시작하지 못했습니다. 문제 해결 방법은 무엇입니까?

Apache에서 사용하는 포트 80이 점유되어 있으면 먼저 포트 80을 점유하는 서비스를 중지한 다음 Apache 서버를 시작하세요

PHP 세션 확장은 기본적으로 세션 데이터를 어디에 저장하나요? D

A) SQLite 데이터베이스

B) MySQL 데이터베이스

C) 공유 메모리

D) 파일 시스템

E) 세션 서버

클래스를 자동으로 로드하려는 경우 C

A) function autoload($class_name)

B) 함수 __autoload($class_name, $file)

C) 함수 __autoload($class_name)

D) 함수 _autoload($class_name)

E) 함수 autoload($class_name, $file)

PHP 프로그램은 다음을 사용합니다. utf-8 인코딩. B


<?php$str = ’hello你好世界’;
echo strlen($str);
?>
로그인 후 복사

A) 9                                                                          >

array()----배열 만들기

array_combine()----두 배열을 병합하여 새 배열 만들기

range()----지정된 범위의 요소를 포함하는 배열 만들기 및 반환

compact()----배열 만들기

array_chunk()----배열을 여러 개로 분할

array_merge()----두 개 이상의 배열을 하나의 배열로 병합

array_slice()--- -조건에 따라 배열의 값 세그먼트 검색

array_diff()----두 배열의 차이 배열 반환

array_intersect()----배열의 교차점 계산

array_search() -- --배열에서 주어진 값 검색

array_splice()----배열의 일부를 제거하고 교체

array_key_exists()----지정된 키가 배열에 존재하는지 확인

shuffle()----배열의 요소를 무작위 순서로 다시 정렬

array_flip()----배열의 요소 교환 키와 값 ​​

array_reverse()----원래 배열의 요소 순서를 반대로 하고, 새 배열을 만들고

array_unique()를 반환합니다.------배열에서 중복 값을 제거

php 파일 내용을 읽습니다. 얼마나 많은 메소드와 함수가 있나요?

파일을 열어서 읽어보세요. Fopen()fread()

한 번 열어서 file_get_contents()를 완성하세요

다음 프로그램에서 str 변수는 어떤 값인가요?

if( !$str ) { echo 111; $str 값: 0, '0′, false, null, ""

PHP에 대해 어떤 기술(스마트 등)을 알고 있나요?

Smarty, jquery, ajax, memcache, p+css, js, mysqli, pdo, svn, thinkphp, brophp, yii

어떤 PHP 포럼 시스템에 익숙합니까?

Discuz

어떤 PHP 몰 시스템에 익숙하시나요?

Ecshop

어떤 PHP 개발 프레임워크에 익숙합니까?

Brophp, thinkphp

캐싱 기술에 대한 이해도를 알려주세요.

1. 캐싱 기술은 동적 콘텐츠를 파일로 캐시하고, 특정 기간 내에 동적 페이지에 액세스하여 데이터베이스를 다시 방문할 필요 없이 캐시된 파일을 직접 호출하는 것입니다.

2. 캐싱에는 Memcache를 사용하세요.

어떤 디자인 패턴을 알고 있나요?

공장 모드, 전략 모드, 단일 요소 모드, 관찰자 ​​모드, 명령 체인 모드

코드 관리에 대해 무엇을 알고 있는지 알려주세요. 어떤 코드 버전 제어 소프트웨어를 자주 사용하십니까?

보통 프로젝트는 팀에 의해 개발됩니다. 모두가 자신의 코드를 버전 서버에 제출하고 프로젝트 리더가 버전에 따라 이를 관리하므로 버전 관리가 용이하고 개발 효율성이 향상되며 이전 코드가 반환될 수 있습니다. 필요할 때 이전 버전으로.

일반적으로 사용되는 버전 컨트롤러: SVN

SVN에 대해 알고 계시나요? 장점과 단점?

SVN은 프로그래머가 개발한 코드를 버전 서버에 제출하여 중앙 집중적으로 관리하는 버전 컨트롤러입니다.

SVN의 장점: 중앙 집중식 코드 관리, 쉬운 버전 관리, 비교적 간단한 조작, 편리한 권한 제어.

단점: 서버 프로젝트 폴더를 마음대로 수정할 수 없습니다.

PHP.ini의 경로를 찾는 방법은 무엇입니까?

보통 php의 설치 디렉터리나 윈도우 시스템의 windows 디렉터리에 있습니다.

PHP 가속 모드/확장? PHP 디버깅 모드/도구?

Zend Optimizer 가속 확장

디버깅 도구: xdebug

일반적으로 사용하는 mysql 명령은 무엇입니까?

데이터베이스 표시

테이블 표시

테이블 이름에 삽입()값()

업데이트 테이블 이름 set field=value where ...

Delete from table name where ...

Select * from table name where 조건 순서 기준 ... Desc/asc 제한 ... 그룹화 기준 ... mysql 관리 명령줄을 입력하는 명령이 ...

있습니까?

Mysql -uroot -p 비밀번호 입력

showdatabases; 이 명령의 기능은 무엇인가요?

현재 mysql 서버에 어떤 데이터베이스가 있는지 표시

show create Database mysql;

데이터베이스를 생성하는 SQL 문을 표시합니다.

show create table user; 이 명령의 기능은 무엇인가요?

테이블을 생성하는 SQL 문을 표시합니다.

desc 사용자; 이 명령의 기능은 무엇인가요?

사용자 테이블의 구조를 쿼리합니다.

explain select * from user;

선택 관련 정보 가져오기

show processlist 이 명령의 기능은 무엇인가요?

실행 중인 스레드 표시

SHOW VARIABLES; 이 명령의 기능은 무엇인가요?

시스템 변수 및 값 표시

'%conn%'와 같은 변수 표시; 이 명령의 기능은 무엇인가요?

显示系统变量名包含conn的值

LEFT JOIN 写一个SQL语句?

SELECTA.id,A.class FROM A LEFT JOIN B ON A.cid=B.id

in, not ni, exist, not exist的作用和区别?

in在什么中

Not in 不在什么中

Exists 存在

Not exists 不存在

怎么找到数据库的配置文件路径?

在数据库安装目录下,my.ini

简述Linux下安装PHP的过程?

安装软件之前先安装编译工具gcc、gcc-c++

拷贝源码包,解包解压缩

Cd /lamp/php进入php目录
./configure–prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc指定安装目录和配置文件目录
Make 编译
Make install安装
简述Linux下安装Mysql的过程?
Groupadd mysql 添加一个用户组mysql
Useradd -gmysql mysql 添加一个mysql用户指定分组为mysql
Cd /lamp/mysql 进入mysql目录
./configure–prefix=/usr/local/mysql/ –with-extra-charsets=all
Make
Make all
简述Linux下安装apache的过程?
Cd /lamp/httpd 进去apache软件目录
./configure–prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr
Make
Make all
HTML/CSS/p/Javascritp:
1. 设计一个页面(4个 p 第一个p 宽960px 居中;第2-4个p  3等分960px;)
<style>
Body{Text-align:center; Margin:0; Padding:0; }
#box{Width:960px; Margin:0 auto; }
.small{Width:320px; Float:left; }
</style>
<pid=’box’>
<pclass=’small’></p>
<pclass=’small’></p>
<pclass=’small’></p>
</p>
用javascript取得一个input的值?取得一个input的属性?
document.getElementById(‘name’).value;
document.getElementById(‘name’).type;
用Jquery取得一个input的值?取得一个input的属性?
$(“input[name=&#39;aa&#39;]“).val();
$(“input[name=&#39;aa&#39;]“).attr(‘type’);
请您写一段ajax提交的js代码,或者写出ajax提交的过程逻辑。
var xmlhttp;
if(window.XMLHttpRquest){
xmlhttp=newXMLHttpRequest();
}elseif(window.ActiveXObject){
xmlhttp=newActiveXObject(‘Microsoft.XMLHTTP’);
}
xmlhttp.open(‘GET’,’1.php?aa=name’,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var text=xmlhttp.responseText;
}
}
}
xmlhttp.send(null);
로그인 후 복사

简述Cookie的设置及获取过程

设置COOKIE的值:

Setcookie(名称,值,保存时间,有效域);

获取值:$_COOKIE['名称'];

面向对象中接口和抽象类的区别及应用场景?

1、有抽象方法的类叫做抽象类,抽象类中不一定只有抽象方法,抽象方法必须使用abstract关键字定义。

2、接口中全部是抽象方法,方法不用使用abstract定义。

3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。

用面向对象来实现A对象继承B和C对象

Interface B{... }

Interface C{... }

Class Aimplements B,C{ ... }

相关推荐:

PHP面试题之算法题

php面试题中面向对象的题目分析

最让人容易出错的10道php面试题

위 내용은 PHP 면접 질문 요약 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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