博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP面试题
阅读量:5954 次
发布时间:2019-06-19

本文共 3065 字,大约阅读时间需要 10 分钟。

1)求出下面的结果。

$arr = array('1','2','3');

unset($arr[0]);
list($a,$b) = $arr;
echo $a;
echo $b;

$a 结果为:空并报错(Undefined offset: 0)。$b结果为 2;

注意:由于list()函数,该函数只用于数字索引的数组,且假定数字索引从0开始

2)书写一个单例模式;

3)排序算法以及复杂度

 4)php中有哪些魔术方法

  __construct() :构造方法,实例化对象时调用

    __destruct():析构方法,销毁对象时调用

  __call():对象调用某个方法是,若属性存在该方法,则直接调用,若不存在改方法,则调用__call函数

  __get():读取一个对象属性时,若该属性存在,则直接返回,若不存在,则调用__get函数

  __set():设置一个对象属性时,若该属性存在,则直接赋值,若不存在,则调用__set函数

  __isset():检测一个对象属性是否存在时被调用

  __unset():销毁一个对象属性时被调用

  __wekeup():预先准备对象需要的资源,经常用在反序列化unserialize()时被调用,例如重新建立数据库链接,或执行其它初始化操作。

  __sleep():执行serialize()函数时被调用,此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组,如果该方法未返回任何内容,则null被序列化,并产生一个E_NOTICE级错误

  __toString():打印一个对象时被调用,此方法返回的必须是一个字符串,否则会发出一条E_RECOVERABLE_ERROR级别的错误。

  __clone():克隆对象时被调用

5)php数组常用函数

 

6)写出下列函数的意义

  split——用正则表达式将字符串分割到数组中

  str_split(string,length)——函数把字符串分割到数组中

  explode(‘’,$str)——使用一个字符串分割另一个字符串,返回数组

  implode()——将一个数组值转化为字符串

7)字符串常用函数

  

8)预定义变量

  $_SERVER['DOCUMENT_ROOT']//当前运行脚本所在的文档根目录

  $_SERVER['HTTP_HOST']//当前请求的Host头部的内容

  $_SERVER['REMOTE_ADDR']//正在浏览当前页面用户的IP地址

  $_SERVER['SERVER_NAME']//当前运行脚本所在服务器主机的名称

  $_SERVER['HTTP_REFERER']//链接到当前页面的前一页面的URL地址

9)POST和GET的区别

  POST:

  (1)最大容量根据php.ini文件配置,默认为8M。

  (2)post是实体数据,可以通过表单提交大量的信息。

 GET:

  (1)大小限制在2KB。

  (2)get是发送请求HTTP协议通过url参数传递进行接收。

 10)mysiam和innodb的区别

11)memcache和redis的区别和联系

12)时间搓和时间日期相互转换的函数。

PHP相关函数:

  1,日期转换为时间搓 strtotime('2018-11-27 13:29:30')。

  2,时间搓转换为时间 date(‘Y-m-d H:i:s’,1156219870)。

mysql相关函数:

  1,时间转换为时间搓 unix_timestamp()。

  2,时间搓转换为时间 from_unixtime()。

13)PHP安全问题

   

14)优化sql语句执行效率的方法

  1.尽量选择较小的列。

  2.将where中用的比较频繁的字段建立索引。

  3.select子句中避免使用‘*’。

  4.避免在索引列上使用计算、not in和<>等操作。

  5.当只需要使用一行数据的时候使用limit 1。

  6.保证单表数据不超过200w,适时分割表。

  7.针对较慢的语句,可以使用explain来分析该语句具体执行情况。

15)对于大流量的网站,用什么方法解决。

  1.确认服务器硬件能否支持当前的流量

    对于普通的pc server来说,它能够独立支持每天10万个独立ip访问,如果访问量过大,最好用性能更高的专用服务器。

  2.优化数据库访问

    服务器的负载过大,一个重要的原因就是cpu和内存负载过高,而读写数据在这块占据较多的资源,可以从页面静态化、memcache缓存和mysql优化几个方面着手。

  3.禁止外部盗链

    占用较大的流量,防盗链,使用reference来判断一下,如果是图片的话,使用添加水印即可很好的防止。

  4.控制大文件的下载

    最好把文件下载的容量控制为相对较小的一个值,如果有大文件下载,最好使用专用的服务器。

  5.使用多台主机实现分流,集群

  6.使用流量分析软件进行分析统计(谷歌、百度)

16)数据集合为$arr = [0=>['id'=>1,'name'=>'A'],1=>['id'=>2,'name'=>'B'],3=>['id'=>3,'name'=>'C'],...]

请建立如下两组数据,用您认为最简单的方式来实现。

(1)[1,2,3...](提取id数组)

(2)[['1'=>'A'],['2'=>'B'],['3'=>'C'],...](id,name的键值对)

  解答:(1) array_column($arr,'id);

     (2) array_column($arr,'name','id');

  注:array_column(array,column_key,index_key)——返回数组中某个单一列的值。(php5.5以上)

         array:必需。规定要使用的多维数据(记录集);

         column_key:必需。需要返回值的列,可以是索引数组的列的整数索引,或者是关联数组的列的字符串键值。

          该参数也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组建的时候,非常有用)。

    index_key:可选,用作返回数组的索引/键的列。

17)计算二维数组中某一元素之和

$arr[0]=array('name'=>'小一','score'=>80);

$arr[1]=array('name'=>'小二','score'=>85);

计算score的和

解答:

  方法一:

    echo  array_sum(array_map(function($val){return $val['score'];}, $arr));

    或:

    echo array_sum(array_map(create_function('$val', 'return $val["score"];'),$arr));

  方法二:

    $sum = 0;

    foreach($arr as $val){
      $sum += (int) $val['score'];
    }

转载于:https://www.cnblogs.com/xlju/p/9803283.html

你可能感兴趣的文章
面向服务的架构SOA
查看>>
lnmp+lamp编译后,编译参数查看
查看>>
OEL7.2下Oracle11.2.0.4RAC部署
查看>>
nagios安装与配置
查看>>
RedHat 设置IP、网关、DNS
查看>>
MYSQL 主从复制读写分离实现
查看>>
linux更改语言
查看>>
centos7 修改mac地址
查看>>
获取Java项目根目录
查看>>
我的友情链接
查看>>
堆排序
查看>>
<script>标签的加载解析执行
查看>>
恢复rm删除的文件(ext3
查看>>
我的友情链接
查看>>
账户注销完自动登录账户,并且不需要再点击屏幕的账户头像
查看>>
【Interface&navigation】按钮(29)
查看>>
我要学python之装饰器
查看>>
Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
查看>>
消息最终一致性解决方案之RabbitMQ实现
查看>>
记录:网络通信协议中的TCP/IP与UDP
查看>>