이전 기사에서는 PHP 면접 질문 요약과 PHP 면접 질문의 thinkphp 및 필기 질문 요약을 소개했습니다. 이는 초보자와 업무 경험이 거의 없는 친구에게도 충분하지만 일부 전문가 및 심지어 3~4년 정도 일한 친구들은 앞서 소개해드린 PHP 면접 질문이 확실히 부족하다고 하셔서 오늘은 PHP 면접 질문에 PHP 핵심 기술을 정리해보겠습니다!
PHP 핵심 기술
1. 여러 프로세스가 동시에 동일한 파일을 성공적으로 쓸 수 있도록 PHP 코드를 작성하세요
핵심 아이디어: lock
<?php $fp = fopen("lock.txt","w+"); if (flock($fp,LOCK_EX)) { //获得写锁,写数据 fwrite($fp, "write something"); // 解除锁定 flock($fp, LOCK_UN); } else { echo "file is locking..."; } fclose($fp);?>
2. 최대한 효율적으로 함수를 작성하고 표준 URL에서 파일 확장자를 추출합니다. 예: http://www.php.cn/abc/de/fg.php?id=1은 php 또는 .php를 추출해야 합니다.
<?php // 方案一 function getExt1($url){ $arr = parse_url($url); //Array ( [scheme] => http [host] => www.php.cn [path] => /abc/de/fg.php [query] => id=1 ) $file = basename($arr['path']); $ext = explode('.', $file); return $ext[count($ext)-1]; } // 方案二 function getExt2($url){ $url = basename($url); $pos1 = strpos($url,'.'); $pos2 = strpos($url,'?'); if (strstr($url,'?')) { return substr($url,$pos1+1,$pos2-$pos1-1); } else { return substr($url,$pos1); } } $path = "http://www.php.cn/abc/de/fg.php?id=1"; echo getExt1($path); echo "<br />"; echo getExt2($path);?>
관련 주제: 파일 확장자를 얻으려면 5개 이상의 방법을 사용하십시오. 요구사항: dir/upload.image.jpg .jpg 또는 jpg를 찾으려면 PHP 자체 처리 기능을 사용해야 합니다. 메소드는 명백히 반복될 수 없습니다. get_ext1(파일명), getext2(파일명)
3. 포럼에서 무한 분류의 구현 원리를 간략하게 설명하세요
다음과 같이 카테고리 테이블을 생성하세요. :
CREATE TABLE category( cat_id smallint unsigned not null auto_increment primary key comment'类别ID', cat_name VARCHAR(30)NOT NULL DEFAULT''COMMENT'类别名称', parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT'类别父ID')engine=MyISAM charset=utf8;
재귀적으로 순회하는 함수 작성, 무제한 분류 달성
<?php function tree($arr,$pid=0,$level=0){ static $list = array(); foreach ($arr as $v) { //如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点 if ($v['parent_id'] == $pid) { $v['level'] = $level; $list[] = $v; tree($arr,$v['cat_id'],$level+1); } } return $list; } ?>
4. 웹 페이지의 모든 JS/VBS 스크립트를 필터링하는 정규식을 작성합니다(즉, 스크립트 태그와 해당 내용을 제거합니다).
필터 자바스크립트 스크립트 참조:
<?php header("content-type:text/html;charset=utf-8"); $script = "以下内容不显示:<script type='text/javascript'>alert('cc');</script>"; $pattern = '/<script[^>]*?>.*?</script>/si'; echo preg_replace($pattern, "脚本内容", $script);//以下内容不显示:脚本内容 ?>
5. 다중 레벨 디렉토리를 생성할 수 있는 PHP 함수 작성
<?php /** * 创建多级目录 * @param $path string 要创建的目录 * @param $mode int 创建目录的模式,在windows下可忽略 */ function create_dir($path,$mode = 0777) { if (is_dir($path)) { # 如果目录已经存在,则不创建 echo "该目录已经存在"; } else { # 不存在,创建 if (mkdir($path,$mode,true)) { echo "创建目录成功"; } else { echo "创建目录失败"; } } }?>
6. PHP의 가비지 수집 메커니즘은 무엇입니까? 더 이상 필요합니다. PHP는 참조 카운팅이라는 간단한 가비지 수집 메커니즘을 사용합니다. 각 개체에는 참조 카운터가 포함되어 있으며 개체에 연결된 각 참조는 카운터를 1씩 증가시킵니다. 참조가 생활 공간을 벗어나거나 NULL로 설정되면 카운터가 1씩 감소합니다. 객체의 참조 카운터가 0에 도달하면 PHP는 더 이상 이 객체를 사용할 필요가 없다는 것을 알고 객체가 차지하는 메모리 공간을 해제합니다.
7 폴더의 모든 파일과 하위 폴더를 탐색할 수 있는 함수를 작성하세요
<?php function my_scandir($dir){ $files = array(); if(is_dir($dir)){ if ($handle = opendir($dir)) { while (($flie = readdir($handle))!== false) { if ($flie!="." && $file!="..") { if (is_dir($dir."/".$file)) { $files[$file] = my_scandir($dir."/".$file); } else { $files[] = $dir."/".$file; } } } closedir($handle); return $files; } } }?>
<?php function checkDateTime($data){ if (date('Y-m-d H:i:s',strtotime($data)) == $data) { return true; } else { return false; } } // 示例 $data = '2015-06-20 13:35:42'; var_dump(checkDateTime($data));//bool(true) $data = '2015-06-36 13:35:42'; var_dump(checkDateTime($data));//bool(false)?>
배열에 있는 현재 요소의 키 이름을 가져오려면 key()를 사용하고, 현재 요소의 값을 반환하려면 current()를 사용하세요. array_keys()를 사용하여 배열의 모든 키 이름을 가져옵니다.
foreach 구조 foreach($arr as key=>value)를 사용하여 키와 값을 통해 각각 키 이름과 값을 얻습니다.$data=array(0=>array('id'=>8,'name'=>'name1'),1=>array('id'=>10,'name'=>'name2'),2=>array('id'=>15,'name'=>'name3')
);
섹션 문 사용:
<{section name=test loop=$data start=0 step=1}> id:<{$data[test].id}><br/> name:<{$data[test].name}> <br/> <br/> <{sectionelse}> 数组为空 <{/section}>
<{foreach from=$data item=test}> id:<{$test.id}><br/> name:<{$test.name}> <br/> <br/> <{foreachelse}> 数组为空 <{/foreach}>
우리 기사에서는 주로 PHP 인터뷰 질문의 핵심 PHP 기술을 요약합니다. 이는 다소 혼란스러울 수 있습니다. 초보자 조금 심도 있는 내용이지만 경험이 풍부한 친구에게는 이것이 참으로 좋은 선택입니다! 이것이 도움이 되기를 바랍니다!
관련 추천:
위 내용은 PHP 면접 질문에서 PHP 핵심 기술 문제 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!