이 기사에서는 전통적인 PHP 면접 질문을 더 자세히 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
인터넷에서 PHP 관련 질문을 몇개 하다가 어느새 여기까지 오게 되었습니다...참고용으로 답변을 올립니다.
1. PHP를 사용하여 2006-5-10 22:21:21(2점) 형식으로 전날 시간을 출력합니다
$a = date("Y-m-d H:i:s", strtotime("-1 day")); print_r($a);
2. echo(), print(), print_r()의 차이점(3점)
echo와 print는 함수가 아니라 언어 구조입니다
int print(string $arg), 단 하나의 매개변수
echo arg1,arg2; 여러 매개변수를 출력하고 void
를 반환할 수 있습니다.
echo 및 print는 구조가 아닌 문자열만 인쇄할 수 있습니다
print_r은 구조를 인쇄할 수 있습니다
예를 들어
$arr = array("key"=>"value"); print_r($arr);
3. HTML과 PHP를 별도로 사용할 수 있는 템플릿(1점)
똑똑해,phplib
4. 버전 관리에는 어떤 도구가 사용되나요? (1점)
svn,git,cvs
5. 문자열 반전을 구현하는 방법은 무엇인가요? (3점)
영어:
strrev($a)
중국어 또는 기타 텍스트:
중국어: GB2312, 코드는 GB2312를 사용하여 인코딩됩니다
<?php function reverse($str) { $ret = ""; len=mbstrwidth(str,"GB2312"); for(i=0;i< len;i++) { arr[]=mbsubstr(str, $i, 1, "GB2312"); } return implode("", array_reverse($arr)); } print_r(reverse("你好"));
6. MYSQL 데이터베이스 최적화 방법. (4점, 더 많이 쓰고 더 많이 받으세요)
문장 측면에서:
1 인덱스를 사용하여 쿼리 효율성 높이기
2 쿼리문 최적화 및 인덱스 적중률 향상
관련 데이터베이스:
1 데이터베이스의 저장 및 확장 기능을 향상시키기 위해 하위 데이터베이스 및 하위 테이블을 구성합니다
2 필요에 따라 다양한 스토리지 엔진을 사용하세요
7. PHP의 의미(1점 획득)
하이퍼텍스트 전처리 언어
하이퍼텍스트 전처리기
8. MYSQL이 현재 시간을 구하는 함수는 무엇이며, 날짜 형식을 지정하는 함수는 (2점)
CURRENT_TIMESTAMP() DATE_FORMAT() select DATE_FORMAT("2011-11-21 10:10:10", "%Y-%m-%d");
9. 중국어 텍스트 문자열을 문자 왜곡 없이 가로채는 방법. (3점)
mb_substr($str, 1, 1, "GB2312");
10. 버전 관리 소프트웨어를 사용해 본 적이 있나요? 그렇다면, 사용한 버전 관리 소프트웨어의 이름은 무엇입니까? (1점)
svn
자식
11. 템플릿 엔진을 사용해 본 적이 있나요? 그렇다면 사용한 템플릿 엔진의 이름은 무엇입니까? (1점)
똑똑해요
12. 가장 자랑스러운 개발 작업을 간략하게 설명해주세요(4점)
XXX
13. 트래픽이 많은 웹사이트의 경우 트래픽 문제를 해결하기 위해 어떤 방법을 사용하시나요? (4점)
1 캐시를 효과적으로 활용하여 캐시 적중률을 높이세요
2 로드 밸런싱 사용
3 CDN을 사용하여 정적 파일 저장 및 가속화
데이터베이스 사용량을 줄이는 4가지 아이디어
5 통계적 병목 현상이 있는 위치를 확인하세요
14. PHP를 사용하여 클라이언트 IP와 서버 IP 1포인트를 표시하는 코드를 작성하세요.
$_SERVER["REMOTE_ADDR"]
$_SERVER["SERVER_ADDR"]
15. include 문과 require 문은 어떻게 다른가요? 동일한 파일을 여러 번 포함하지 않으려면 (?) 문으로 바꾸면 되나요?
실패 시:
include는 경고를 생성하고, require는 오류 인터럽트를 생성합니다
실행하기 전에 require가 로드됩니다
include는 런타임에 로드됩니다
한 번만 필요
include_한번
16. SESSION의 생존시간(1분)을 수정하는 방법
session_set_cookie_params
17. PHP 연구소 홈페이지 같은 웹페이지 주소가 있습니다: http://www.jb51.net/index.html, 콘텐츠를 얻는 방법($1 포인트)
파일_겟_컨텐츠
컬
18. HTTP 1.0에서 상태 코드 401의 의미는 (?)이고, "파일을 찾을 수 없습니다"라는 프롬프트가 반환되면 헤더 기능을 사용할 수 있으며 해당 명령문은 (2점)입니다.
무단
header("HTTP/1.0 404 Not Found");
빠른 CGI:
header("Status: 404 Not Found");
19. PHP에서 heredoc은 특수 문자열이며 끝 표시는?(1포인트)이어야 합니다.
짝을 이뤄 등장
$a = <<EOD good test EOD;
20. asp, php, jsp의 장점과 단점에 대해 이야기해 보세요(1점)
ASP는 IIS에 의존해야 하며 Microsoft에서 개발한 언어입니다
PHP와 JSP는 Apache 또는 nginx와 같은 다른 서버에 의존할 수 있습니다
21. mvc에 대한 이해를 말해 보세요(1점)
모델: 데이터 구조 계층
보기: 표시
제어: 처리 입력을 수신하고 판단
22. 다음 표를 사용하여 게시물이 가장 많은 10명의 이름에 대한 SQL을 작성하세요. 회원(ID, 사용자 이름, 게시물, 패스, 이메일)(2점)
회원 중에서 상위 10개의 ID, 사용자 이름을 선택하세요. 게시물 설명순으로 정렬
23. PHP에서 값 전달과 참조 전달의 차이점을 설명해주세요. 언제 값으로 전달할 것인지, 언제 참조로 전달할 것인지? (2점)
&는 참조 전달을 의미합니다
함수에서 참조로 매개변수를 전달하면 매개변수가 변경됩니다
일반적으로 출력 매개변수가 여러 개인 경우 참조
24. PHP에서 error_reporting 기능은 무엇인가요?(1점)
오류 표시 수준 설정
25. 이메일 형식이 맞는지 확인하는 기능을 작성해주세요(2점)
$str = "jianfeng@126.com"; regex="([a−z0−9\.−]+)@([\da−z\.−]+)\.([a−z\.]2,6)" ; //正则 return preg_match(regex,str)
26. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)
$argc --获取参数数量
$argv --获取参数列表
27.如何修改SESSION的生存时间. (1分)
session_set_cookie_params
28、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)
alert()
confirm()
promopt()
focus()
29、JS的转向函数是?怎么引入一个外部JS文件?(2分)
window.location.href="#" <script src="#"></script>
30、foo()和@foo()之间有什么区别?(1分)
@代表所有warning忽略
31、如何声明一个名为”myclass”的没有方法和属性的类? (1分)
class myclass { }
32、如何实例化一个名为”myclass”的对象?(1分)
$myclass = new myclass();
33、你如何访问和设置一个类的属性? (2分)
<?php class A { public $name = "A"; } $a = new A(); n=a->name; print_r($n);
34、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)
mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。
<?php mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb"); $result = mysql_query("SELECT id, name FROM mytable"); while (row=mysqlfetcharray(result, MYSQL_ASSOC)) { printf ("ID: %s Name: %s", row["id"],row["name"]); } mysql_free_result($result);
35、GD库是做什么用的? (1分)
动态的开放的图片处理库
36、指出一些在PHP输入一段HTML代码的办法。(1分)
echo "{html}" echo <<EOD {html} EOD;
37、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分) c
(a) fget() (b) file_open() (c) fopen() (d) open_file()
38、下面哪个选项没有将 john 添加到users 数组中? (1分) b
(a) $users[] = ‘john';
(b) array_add($users,'john');
(c) array_push($users,‘john');
(d) $users ||= ‘john';
39、下面的程序会输入是否?(1分) 10
$num = 10; function multiply(){ num=num * 10; } multiply(); echo $num; ?>
40、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)
表名 UserName Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
请根据上面的题目完成代码:
$mysql_db=mysql_connect("local","root","pass"); @mysql_select_db("DB",$mysql_db); $sql = sprintf("select * from %s where UserName = '%s'", "表名", "张三"); values=mysqlquery(sql); while(item=mysqlfetchqueryarray(values)) { echo sprintf("用户名:%s, 电话 %s, 学历: %s, 毕业日期: %s", item['UserName'],item['Tel'], item['Content'],item['Date'] ); }
41、如何使用下面的类,并解释下面什么意思?(3)
class test{ function Get_test($num){ num=md5(md5(num)."En"); return $num; } } $test = new test(); ret=test->Get_test(11); print_r($ret);exit;
将num进行MD5编码之后生成的32位字符串a1和"En"联系起来之后再进行一次MD5编码
42、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)
表名 UserName Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
insert into 表名 values('小王', '13254748547', '高中毕业', '2007-05-06')
(b) 请用sql语句把张三的时间更新成为当前系统时间
update 表名 set Date = GETDATE() where UserName = "张三"
(c) 请写出删除名为张四的全部记录
delete from 表明 where UserName = "张四"
43、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)
int 整型
char 存储定长
varchar 存储变长
datetime 时间
text 存储变长的
varchar是变长
char(20) 定长
44、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)
auto_increment
45、写出以下程序的输出结果 (1分)
$b=201; $c=40; a=b>$c?4:5; echo $a;
46、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)
isset()
empty()
47、取得查询结果集总数的函数是?(1分)
mysql_num_rows()
48、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)
print_r($arr[0]); reset($arr); print_r(current($arr)); print_r(array_shift($arr));
49、请将41题的数组的值用','号分隔并合并成字串输出(1分)
implode
50、a='abcdef';请取出a的值并打印出第一个字母(1分)
$a[0]; substr($a, 0, 1);
51、PHP可以和sql server/oracle等数据库连接吗?(1分)
可以
有现成的库
52、请写出PHP5权限控制修饰符(3分)
public
private
protected
53、请写出php5的构造函数和析构函数(2分)
public function __construct() { } public function __destruct() { }
编程题:
1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
<?php $url = "http://www.sina.com.cn/abc/de/fg.php?id=1"; arr=parseurl(url); pathArr=pathinfo(arr['path']); print_r($pathArr['extension']);
3. 写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 b相对于a 的相对路径应该是 http://www.jb51.net/12/34/c.php将添上
<?php $a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; //获取path相对于conpath的相对路径 function sGetRelativePath(path,conpath) { pathArr=explode("/",path); conpathArr=explode("/",conpath); $dismatchlen = 0; for(i=0;i < count(pathArr);i++) { if(conpathArr[i] != pathArr[i]) { dismatchlen=count(pathArr) - $i; arrLeft=arrayslice(pathArr, $i); break; } } ret=strrepeat("../",dismatchlen).implode("/", $arrLeft); return $ret; } print_r(sGetRelativePath(b,a));
3.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
<?php function aGetAllFile($folder) { $aFileArr = array(); if(is_dir($folder)) { handle=opendir(folder); while((file=readdir(handle)) !== false) { //如果是.或者..则跳过 if(file=="."||file == "..") { continue; } if(is_file(folder."/".file)) { aFileArr[]=file; } else if(is_dir(folder."/".file)) { aFileArr[file] = aGetAllFile(folder."/".file); } } closedir($handle); } return $aFileArr; } $path = "/home/test/sql"; print_r(aGetAllFile($path));
希望本文所述对大家的php程序设计有所帮助。