设为首页 加入收藏

TOP

PHP最新面试题2019(一)
2019-09-15 00:33:48 】 浏览:130
Tags:PHP 最新 试题 2019

 

1、字符串"0"在PHP和js中转换为布尔值是false还是true

php:false;  php 弱语言 '0'和0一样;

js:true;字符串除了空字符串('')其他都是true(包括' '这种中间有空格的);

2、echo, print, print_r, var_dump 区别

echo 语言结构,并不是真正的函数,可以一次输出多个值,多个值之间用逗号分隔。

print 是函数,只能输出一个值。

print_r 能打印数组,对象。

var_dump 能打印数组,对象,并且带数据类型。

3、程序 $a = "www"; settype($a, 'array'); (string)$a; floatval($a); echo gettype($a); 运行后输出结果:

array  原因:settype会改变原值的数据类型,string,floatval属于强制转换,不改变原值的数据类型。

4、用PHP实现冒泡排序算法。

// 控制轮次数
for ($i = 1; $i < count($arr); $i++) {
    //控制次数,并判断大小交换位置
    for ($j = 0; $j < count($arr) - $i; $j++) {
        //如果当前值大于后面的值
        if ($arr[$j] > $arr[$j + 1]) {
            // 交换
            $temp = $arr[$j];
            $arr[$j] = $arr[$j + 1];
            $arr[$j + 1] = $temp;
        }
    }
}

5、一 群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的 进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

// $n猴子个数 $m第几个位置
function fn($n, $m)
{
    //将猴子数量放到数组内
    for ($i = 1; $i < $n + 1; $i++) {
        $arr[] = $i;
    }
    $i = 0;
    //当数组内只剩下一个值跳出数组
    while (count($arr) > 1) {
        //遍历数组,判断当前猴子是否为出局序号,如果是则出局,否则放到数组最后
        if (($i + 1) % $m == 0) {
            //当循环次数满足m值 去除掉当前值
            unset($arr[$i]);
        } else {
            //不满足循环次数 放到数组对尾
            array_push($arr, $arr[$i]);
            //删除掉当前循环内容
            unset($arr[$i]);
        }
        $i++;
    }
    return $arr;
}
// 调用
var_dump(fn(15,7));

6、分表,分区,分库,难点是什么?怎么均匀存储数据?

分表:即把一个很大的表的数据分到几个表中。

分表又分为垂直拆分和水平拆分。

垂直拆分:把字段拆分;可以把不常用的字段放一张表,把大字段放一张表,把常用的字段放一张表。

水平拆分:把表数据拆分;可以通过id取模的方式拆分数据,比如要拆分成100张表,user0,user1,user2......,id%100得到的余数即存储到哪张表。

分表难点:按什么策略来分表;分表后该怎么查询数据(什么情况下该访问哪张表)。

 

分区:所有的数据还在一个表中,但物理存储数据根据一定的规则存放在不同的文件中,文件也可以放到不同的磁盘上。分区的类型:range分区,list分区,hash分区和key分区。

常见分区方式:

1、根据时间间隔分区,比如以年为单位,分区存储数据。

2、根据自增的主键id,hash(id div 10000000) 表示100万数据建立一个分区。

 

分库:把数据分几个库存储。分为垂直分库和水平分库。

垂直分库:根据表来分数据库,同一类型的表一个数据库;比如博客一个数据库,论坛一个数据库。

水平分库:根据某些规则,将同一个表的数据分布在不同的库上;比如根据用户id把用户的博客文章分布在5个数据库上。

7、PHP中单引号和双引号的区别。

在一般情况下,单引号和双引号是可以互通的,但双引号内部变量会解析,而单引号内部变量不解析

8、require()和include()的区别。

都是引入别的页面;

require()出现错误,会终止程序;而include()则会继续执行,并会显示一个错误警告;

在实际项目中,一般使用require_one()更好。

9、PHP中超全局变量,魔术变量,魔术方法:

超全局变量(9个):

参考:https://www.php.net/manual/zh/language.variables.superglobals.php

$GLOBALS

$_SERVER

$_REQUEST

$_POST

$_GET

$_FILES

$_ENV

$_COOKIE

$_SESSION

魔术变量(8个):

__LINE__    文件中的当前行号。

__FILE__    文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

__DIR__     文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

__FUNCTION__    返回该函数被定义时的名字(区分大小写)

__CLASS__    返回该类被定义时的名字(区分大小写)。

__TRAIT__    Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

__METHOD__     返回该方法被定义时的名字(区分大小写)。

__NAMESPACE__    当前命名空间的名称(区分大小写)。

魔术方法:

参考:https://www.php.net/manual/zh/language.oop5.magic.php

10、栈和队列

栈:是允许在同一端进行插入和删除的特殊线性表。

栈也称为先进后出表。

注:线性表是最基本,最简单,也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系。

队列:是一种特殊的线性表。特殊之处在于只允许在前端进行删除操作,在表的后端进行插入操作。

队列也称为先进先出表。

11、对称加密和非对称加密

对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。 

常见的对称加密算法:DES,AES,3DES等等。

非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。 

常见的非对称加密算法:RSA,ECC(移动设备用),DSA(数字签名用)

12、时间复杂度和空间复杂度

算法复杂度分为时间复杂度和空间复杂度。

其作用:时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux下PHP+Nginx环境搭建 下一篇Thinkphp带表情的评论回复实例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目