>  기사  >  백엔드 개발  >  PHP 면접 질문 요약

PHP 면접 질문 요약

不言
不言원래의
2018-04-21 10:27:358724검색

이 글에 소개된 내용은 참고할만한 가치가 있는 PHP 면접 질문을 요약한 것입니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들은 참고할 수 있습니다.

관련 추천: "2019 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. 서버 측 오류 시리즈

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

4. Linux

Tar.gz:

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

Extract: tar xzf file.tar에서 압축 패키지를 생성하고 패키지의 압축을 푸는 명령. gz

Bz2:

Package: bzip2 [-k] File

Unzip: bunzip2 [-k] File

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

Package: gzip file1.txt

Unzip : gunzip file1.txt.gz

Zip: -r 디렉토리 압축

: zip file1.zip file1.txt

Decompress: unzip file1.zip

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

8. 변수가 존재하는지 확인하려면 여러 변수를 전달하면 됩니다. 변수 중 하나가 존재하지 않으면 false를 반환하고, 변수가 비어 있는지 확인하면 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에서 값 전달과 참조 전달의 차이점을 설명해주세요. 언제 값으로 전달하고 언제 참조로 전달합니까?
                                                    사용 사용                 사용 사용                   통해             통해 통해 통해 통해 ''   통과'''' 통과 통과 통과 통과 통과 통과 통과 통과 통과 대기 기준으로 통과됩니다.

                                                                                off 전달되면 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“电子邮件检测成功”;
         }
}

다양하고 PHP 내장 함수(array_multisort())를 호출할 수 있는 2차원 배열 정렬 알고리즘 함수를 작성하세요.

//二维数组排序, $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', $fruit 배열 형성,

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

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이 요구 사항을 충족하지 않으면 오류 메시지가 반환됩니다.

포트 80이 사용되었는지 확인하세요. apache가 점유되어 있으면 먼저 포트 80을 점유하는 서비스를 중지한 다음 apache 서버를 시작하십시오.

PHP 세션 확장은 기본적으로 세션 데이터를 어디에 저장합니까? D

A) SQLite 데이터베이스

B) MySQL 데이터베이스C) 공유 메모리

D) 파일 시스템

E) 세션 서버

클래스를 자동으로 로드하려는 경우 다음 함수 선언 중 올바른 C

A) 함수는 무엇입니까? 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

$str = 'hello hello world';

Echo Strlen ($ Str);

? & GT;

a) 9 B) 13(GBK) C) 18 D) 17(UTF8)



e e pHP 배열 관련 기능 알다?

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()

다음 프로그램에서 111을 입력했을 때 변수 str의 값은 무엇입니까?

if( ! $str ) { echo 111; }

$str 값: 0, '0', false, null, ""

PHP 기술(예: smarty)을 알고 계십니까?

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的安装目录下,或者window系统的windows目录下。

 

PHP加速模式/扩展? PHP调试模式/工具?

Zend Optimizer加速扩展

调试工具:xdebug

 

你常用到的mysql命令?

Show databases

Show tables

Insert into 表名()values()

Update 表名 set字段=值 where ...

Delete from 表名where ...

Select * from 表名where 条件 order by ... Desc/asc limit ... Group by ... Having ...

 

进入mysql管理命令行的命令?

Mysql -uroot -p回车密码

 

show databases; 这个命令的作用?

显示当前mysql服务器中有哪些数据库

 

show create database mysql; 这个命令的作用?

显示创建数据库的sql语句

 

show create table user; 这个命令的作用?

显示创建表的sql语句

 

desc user; 这个命令的作用?

查询user表的结构

 

explain select * from user; 这个命令的作用?

获取select相关信息

 

show processlist; 这个命令的作用?

显示哪些线程正在运行

 

SHOW VARIABLES; 这个命令的作用?

显示系统变量和值

 

SHOW VARIABLES like ’%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 经典面试题集 PHP 经典面试题集

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

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