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

三、另一份解答

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

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

  1. iOS 视频开发学习

    原文:浅谈iOS视频开发 这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我 ...

  2. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  3. Android 音视频开发学习思路

    Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...

  4. Python GUI with Tkinter (from youtube) 在youtube上能找到很多编程视频...

    Python GUI with Tkinter - 1 - Introduction以上链接是一个python tkinter视频系列的第一讲的链接.虽然英语不好,但是,程序还是看得懂的(照着做就可以 ...

  5. CYQ.Data 轻量数据层之路 使用篇-MProc 存储过程与SQL 视频[最后一集] H (二十八)

    2019独角兽企业重金招聘Python工程师标准>>> 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)   的附加视 ...

  6. iOS音频与视频的开发(一)-使用AVAudioPlayer播放音乐、使用AVPlayerViewController播放视频

    iOS的多媒体支持非常强大,它提供了多套支持多媒体的API,无论是音频.视频的播放,还是录制,iOS都提供了多种API支持.借助于这些API的支持,iOS应用既可以查看.播放手机相册中的照片.视频,也 ...

  7. video视频标签一些设置,包括封面、播放结束后的封面、视频占满屏幕的方式、视频播放暂停、展示控制栏、触发全屏播放事件

    video视频标签一些设置,包括封面.播放结束后的封面.视频占满屏幕的方式.视频链接.视频播放暂停.展示控制栏.触发全屏播放事件 <video id="video" auto ...

  8. 学习笔记:Django开发网上教育平台(参考了慕课网的教学视频)

    第一步:进行环境的搭建(用到的IDE:pycharm  ,数据库为mysql.nacicat.编辑语言python3.7.以及自己配置的虚拟环境venvpy37) Django==2.2​ ​ 配置好 ...

  9. 看一下我学习linux的过程

    学习Linux的最佳方法是将它用于日常工作. 阅读Linux书籍,观看Linux视频不仅仅是足够的. 学习Linux没有捷径可走. 你不可能在一夜之间在Linux中掌握. 这需要时间和持久性. 刚刚潜 ...

随机推荐

  1. 【基础篇】点击Button按钮更换图片

    我们在开发的过程中,往往为了美化界面的需要,会修改按钮的默认外观,而因为Android中的按钮有三种状态—默认,被点击,被选中.所以,如果要改变按钮的外观,需要对这三种情况都做出修改,也许在以往,我们 ...

  2. Java_Learn

    20180417 集合类 Collection 如果是实现了list接口的集合类,具备的特点是有序,可重复: 如果是实现了set接口的集合类,具备的特点是无序,不可重复: Collection中的方法 ...

  3. Standalone 集群部署

    Spark中调度其实是分为两个层级的,即集群层级的资源分配和任务调度,以及任务层级的任务管理.其中集群层级调度是可配置的,Spark目前提供了Local,Standalone,YARN,Mesos.任 ...

  4. Java遍历目录下全部文件并替换指定字符串

    应用场景:比方有一个深层次的文件目录结构,如:javaAPI 每一个文件中面都有同样的内容,而我们要统一改动为其它内容.上千个文件假设一个个改动显得太不明智. import java.io.Buffe ...

  5. ubuntu mysql 无法启动 简单排查

    自己的站点非常久没有去上了,想打开发现竟然打不开了.所以就找了一系列的原因. vps不行了 dns解析出问题了 域名出问题了 简单排查之后,我的vps服务商用的是 ***(bandwagonhost) ...

  6. Linux(centos)下mysql编译安装教程

    Linux下mysql编译安装教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 本文測试环境centOS6.6 一.Linux下编译安装MyS ...

  7. 雅黑PHP探针 For PHP7

    雅黑PHP探针 For PHP7资料来源: https://kn007.net/topics/yahei-php-probe-for-php7/在v0.4.7版本的基础上,修正了废弃函数及错误语法.使 ...

  8. Warning: Division by zero in 错误处理

    Warning: Division by zero in 错误处理 今天调试一段代码,结果提示 Warning: Division by zero in ,没有扫到答案,最后发现 $dir/$name ...

  9. CentOS6 安装中文包和变更系统默认语言

    CentOS6 安装中文包和变更系统默认语言   用 yum 安装语言包的命令是 yum groupinstall <language>-support    ,其中 <langua ...

  10. Relaxation step(Dijkstra's 最短路径算法)

    翻译成中文就是"松弛",属于工程优化的范畴: Dijkstra 的单源最短路径算法,有一个重要的步奏,当访问到新的结点 u (加入到集合 S),然后遍历 u 的邻接顶点(Adj), ...