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. 解决 Ubuntu 下解压 .zip 文件时出现乱码

    Ubuntu 下解压含中文名的 .zip 文件时,有时候会出现乱码的情况.我们可以通过下列命令来解决此类问题: $ unzip -O CP936 xxx.zip 原文网址 http://www.cnb ...

  2. 【iOS与EV3混合机器人编程系列之中的一个】iOS要干嘛?EV3能够更酷!

    乐高Mindstorm EV3智能机器人(下面简称EV3)自从在2013年的CES(Consumer Electronics Show美国消费电子展)上展出之后,就吸引了全球广大机器人爱好者的眼球!E ...

  3. HDU 3400 Line belt (三分再三分)

    HDU 3400 Line belt (三分再三分) ACM 题目地址:  pid=3400" target="_blank" style="color:rgb ...

  4. bootstrap之Orientation

    Orientation 调整屏幕方向的操作. package io.appium.android.bootstrap.handler; import android.os.RemoteExceptio ...

  5. 【基础练习】【线性DP】codevs2622 数字序列(最大连续子序列和)题解

    版权信息 转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看 这道题目本质就是朴素的最大连续子序列和 直接上题目和代码 题目描写叙述 Descr ...

  6. 17.Node.js 回调函数--异步编程

    转自:http://www.runoob.com/nodejs/nodejs-tutorial.html Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程 ...

  7. 无阻塞加载外部js(动态脚本元素,XMLHttpRequest注入,LazyLoad)

    动态脚本元素即在js中去创建<script>标签加载外部js并执行,这样加载的好处是文件的下载和执行过程不会阻塞页面的其他进程.通过下面两个例子对比出效果 <!DOCTYPE htm ...

  8. 2.1 Producer API官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 2.1 Producer API 2.1.生产者API 我们鼓励所有新开发的程序使用 ...

  9. 使用Iperf调整网络

    使用Iperf调整网络     Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,通过调谐各种参数可以测试TCP的最大带宽,并报告带宽.延迟,最大段和最大传输单元大小等统计信息.Ip ...

  10. canvas和svg区别

    什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以 ...