php面试题5

php面试题5

一、总结

二、php面试题5

1. 什么事面向对象?主要特征是什么?
1) 面向对象是程序的一种设计方式,它利于提高程序的重用性,是程序结构更加清晰。
2) 主要特征:封装、继承、多态

2. SESSION 与 COOKIE 的区别是什么,请从协议,产生的原因与作用说明?
1) http 无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页
面不能看做是同一个用户
2) SESSION 保存在服务器端,COOKIE 保存在客户端,SESSION 依赖 COOKIE 进行传
输,如果 COOKIE 被禁用了,SESSION 将不能继续使用

3. HTTP 状态中 302、403、 500 代码含义?
302 重定向、403 服务器拒绝访问、500 服务器内部错误

4. Linux 下建立压缩包,解压缩包的命令。
1) tar czf test.tar.gz test.php
2) tar xzf test.tar.gz

5. 请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char 有
什么区别?
int 是数字类型,char 固定长度字符串,varchar 实际长度字符串,datetime 日期时间型,text
文本字符串,char 的场地固定为创建表设置的长度,varchar 为可变长度的字符

6. MyISAM 和 InnoDB 的基本区别?
1)在增、删、改和查方面,myisam 要优于 innodb 表引擎,当数据量特别大时,他们的速度
相差不大
2)innodb 支持 myisam 所不具备的事务支持、存储过程,行级锁定等等

7. 不使用 cookie 向客户端发送一个 cookie.
<?php
session_start();
echo $sn=session_name();
echo "<br>";
echo $sid=session_id();
echo "<a href='test2.php?{$sn}={$sid}'>url 传递 session</a>";
?>
//PHPSESSIONID=kkkkkaldfjaldfjladsf;

10. isset() 和 empty() 区别,对不同数据的判断结果
1)isset()是判断变量是否存在,是否定义
2)empty()是判断变量的值是否为空.

12. 如何在页面之间传递变量(至少两种方式) ?
1)get
2)post
3)ajax
4)curl
5)cookie
6)session

三、PHP 代码题
1. 写出匹配 URL 的正则表达式.

http://www.baidu.com/index.php?id=1&name=user1
(http|ftp)://(www.)?(S*)(?S*&S*)?
(.*)//(.*)?(.*)?

2. 请写出常见的排序算法,并用 PHP 实现冒泡排序,将数组$a = array()按照从小到大的
方式进行排序。
3 2 2 2 1
2 3 1 1 2
1 1 3
$i>$j
$tmp=$i;
$i=$j;
$j=$tmp;
<?php
Function mysort($arr){
For($i=0; $i<count($arr); $i++){
For($j=0; $j<count($arr)-1; $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));
//$a=10 $b=20 $tmp=$a $a=$b $b=$tmp

3. 在数据库 test 中的一个表 student,字段是 name,class,score。分别代表姓名、所
在班级,分数。
1) 算出每个班级中的学生,按照成绩降序排序;
select name,class,score from student order by score desc;
2) 查出每个班的及格人数和不及格人数,格式为:class、及格人数、不及格人数;
SELECT class,
SUM(CASE WHEN score>=60 THEN 1 ELSE 0 END),
SUM(CASE WHEN score<60 THEN 1 ELSE 0 END)
FROM tb1 GROUP BY class

3) 用 PHP 写入连接数据库("localhost","msuser","mspass")、执行以上 SQL、显示结果、
判断错误、关闭数据库的过程

$conn=mysql_connect(‘localhost’,'msuser’,’mspass′);
Mysql_select_db(‘test’);
$sql=" SELECT class,
SUM(CASE WHEN score>=60 THEN 1 ELSE 0 END),
SUM(CASE WHEN score<60 THEN 1 ELSE 0 END)
FROM tb1 GROUP BY class";
if($result=Mysql_query($sql)){
while($row=mysql_fetch_assoc($result)){
  print_r($row);
}
}
Mysql_close($conn);


; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
;   to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
;   in publicly accessible computer.
; - User may access your site with the same session ID
;   always using URL stored in browser's history or bookmarks.
; http://php.net/session.use-trans-sid
session.use_trans_sid = 0

如果客户端禁用cookie,可以通过这个在url上加session信息来达到cookie效果,就是登录效果,因为session是通过cookie实现的

在php.ini里面


12.heredoc标记
$str=<<<x
<html>
<head>
    <title></title>
</head>
<body>
    <div>
        <h1>{$name}</h1>
        <h1>{$name}</h1>
        <h1>{$name}</h1>
        <h1>{$name}</h1>
    </div>
</body>
</html>
x;

13.运算符
<?php
$a=0;
$b=4;

if($a=3 || $b=5){
    $a++; //true
    $b++; //5
}

echo $a; //1
echo '<br>';
echo $b; //5
?>

<?php
$a=0;
$b=4;

if($a=3 & $b=4){
    $a++;
    $b++;
}

echo $a;
echo '<br>';
echo $b;

13.web服务器返回的状态码:
1)200 正常响应
2)404 文件找不到
3)302 地址重定向
4)403 拒绝访问
5)500 内部程序错误
6)304 没有更新

14.冒泡排序
function ss($arr){
    for($i=0;$i<count($arr);$i++){
        for($j=$i+1;$j<count($arr);$j++){
            if($arr[$i]>$arr[$j]){
                $x=$arr[$i];
                $arr[$i]=$arr[$j];
                $arr[$j]=$x;
            }
        }
    }
    return $arr;
}

原文地址:https://www.cnblogs.com/Renyi-Fan/p/9062276.html