php 面试题一(看视频的学习量比网上瞎转悠要清晰和明了很多)(看视频做好笔记)(注重复习)

php 面试题一(看视频的学习量比网上瞎转悠要清晰和明了很多)(看视频做好笔记)(注重复习)

一、总结

1、无线分类的本质是树(数据结构)(数的话有多种储存结构可以实现,所以对应的算法也有很多),想到这一点你有一万种方法来实现无限分类

2、反斜杠(\)表示转义字符,在php和php正则中都是这样,c的话\n,echo preg_replace(‘’/(\d+)\/(\d+)\/(\d+)/,’$3$1$2’,$date);

二、php 面试题一

1,用 PHP 获取当前时间并打印,打印格式:2006-5-10 22:21:21
date_default_timezone_set('PRC');
echo date('Y-n-d H:i:s');

2,字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么?
1) $str='www.baidu.com';
print_r(str_split($str));
explode()
2) $arr=array("aaa","bbb","ccc");
print_r(implode('',$arr)); //join()
3)substr($str,1,10); mb_substr mb_strcut
4) $bodytag = str_replace("%body%", "black", "<body text='%body%'>");

preg_replace();
5) $string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '\${1}1,\${3}';
echo preg_replace($pattern, $replacement, $string);

6)preg_match()
preg_grep()
strstr()

strpos()
strrpos()

3,解释一下 PHP 的类中:protect,public,private,interface,abstract,final,static 的含义
1)protect 被保护的
2)public 公有的
3)private 私有的
4)interface 接口
5)abstract 抽象类
6)final 最后的类和方法
7)static 静态方法和属性

4, 写出下列代码的数据结果
$date='08/26/2003'; 2003/08/26
1) $date='08/26/2003';
echo preg_replace("/([0-9]+)\/([0-9]+)\/([0-9]+)/","\${3}/\${1}/\${2}",$date);
echo preg_replace(‘’/(\d+)\/(\d+)\/(\d+)/,’$3$1$2’,$date);

5,从表 login 中选出 name 字段包含 admin 的前 10 条结果所有信息的 sql 语句
1)select * from login where name like "%admin%" limit 10 order by id;

6,解释:左连接,右连接,内连接,索引
1)left join
2)right join
3)inner join
mysql> select t1.name,t2.addr from t1 inner join t2 on t1.id=t2.uid;
select t1.name,t2.addr from t1,t2 where t1.id=t2.uid;
mysql> select t1.name,t2.addr from t1,t2 where t1.id=t2.uid;
4)index
Alter table t1 add index in_name(name);
Alter table t1 drop index in_name;
Alter table t1 add primary key(id);

7,简述论坛中无限分类的实现原理。
1)一张表,有 id,pid
2)get
id pid name
prev > next

id name pid path
1 aaa 0 0

2 bbb 1 0-1 aaa
3 ccc 1 0-2

8,写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如:http://www.test.com.cn/abc/de/fg.php需要取出php或.php

parse_url

pathinfo

extension

basename

dirname

explode

php 面试题一(看视频的学习量比网上瞎转悠要清晰和明了很多)(看视频做好笔记)(注重复习)

三、另一份解答

1.date函数参数
Y
y
m
n
d
j
t
L
H
i
s

2.字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找
explode();
join();
substr();
mb_substr();
str_replace();
preg_replace();
preg_match();

3.左链接,右链接,内链接
user left join post on user.id=post.user_id
post right join user on post.user_id=user.id
user inner join post on user.id=post.user_id
#复习基础课中mysql的所有课程

4.无限分类
id name pid path
#高级课24号课程

5.从url地址中取出后缀
第一种:
<?php
$url='http://www.baidu.com/index.php';

$arr=pathinfo($url);

echo "<pre>";
print_r($arr);
echo "</pre>";
 ?>

第二种:
<?php
$url='http://www.baidu.com/index.php';

$arr=explode('.',$url);

echo array_pop($arr);
 ?>

第三种:
<?php
$url='http://www.baidu.com/index.php';

$pos=strrpos($url,'.');

echo substr($url,$pos+1);
 ?>

6.mvc理解:
m model 数据模型
v view  模板视图
c control 类控制器

7.解决大访问量
web服务器:
至少两台以上服务器来提交对客户的请求,web服务器负载均衡,apache并发人数3000左右,nginx并发人数20000左右
mysql服务器:
多台mysql服务器对外提供sql响应,数据库服务器负载均衡

软件:
1)静态缓存
2)数据缓存

数据库:
1)字段加索引
2)分表

8.mysql优化
1)服务器优化
    1)服务器负载均衡
2)数据库优化
    1)myisam表引擎
3)表优化
    1)分表
    2)字段索引
4)sql语句优化
    1)写sql语句时,where后面的字段尽量使用加索引的字段,而且要小心有的sql语句会让索引失效.

9.安全登录系统
1)验证码
2)限制登录时间
3)动态口令
4)短信验证

10.防sql注入
1)mysql服务器用户权限问题
2)用addslashes函数把表单数据进行转义处理
3)用htmlspecialchars函数把表单数据进行实体化
4)使用mysql预处理机制发送执行sql语句
5)及时给mysql软件更新补丁

11.防盗链
$_SERVER['HTTP_REFERER'];
#获取上一个页面的来源url,通过url中的域名或ip可以判断是否是来自本机的某一个脚本

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;
}

上一篇:【unix网络编程第三版】阅读笔记(四):TCP客户/服务器实例


下一篇:c++ 继承 虚函数与多态性 重载 覆盖 隐藏