php记录已经点击过,最近一次的PHP面试题记录,office已到手!

1、explain 具体哪些等级

具体有 system、const、range、index、all

2、MySQL 优化

避免全表查询,首先应考虑在 where 及 order by 涉及的列上建立索引

应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 (可以将字段默认值设置为 0)

应尽量避免在 where 子句中使用!= 或 <> 操作符,否则引擎将放弃使用索引而进行全表扫描

应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20 可以这样查询:select id from t where num=10 union all select id from t where num=20

n 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in (1,2,3) 对于连续的数值,能用 between 就不要用 in 了:select id from t where num between 1 and 3

下面的查询也将导致全表扫描:select id from t where name like ‘% 李 %’若要提高效率,可以考虑全文检索。

应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

不要在 where 子句中的 “=” 左边进行函数、算术运算或其他表达式运算

在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。

很多时候用 exists 代替 in 是一个好的选择:select num from a where num in (select num from b)

用下面的语句替换:

select num from a where exists(select 1 from b where num=a.num)

索引并不是越多越好,索引固然可 以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。

任何地方都不要使用 select from t ,用具体的字段列表代替 “”,不要返回用不到的任何字段。

尽量避免大事务操作,提高系统并发能力.

分库分别

分区分表分库

3、redis 支持哪些类型

支持 5 种类型:字符串、哈希、链表、有序、无序,最新的 redis 5.0 中,新增 stream 类型,非常高效的支持队列。

4、PHP7 与 php5 的区别

foreach 不再改变内部数组指针

标量类型声明,在旧版中,函数的参数申明只能是 (Array

math?formula=arr)%E3%80%81(CLassNameobj) 等,基本类型比如字符串 (string), 整数 (int), 浮点数 (float), 以及布尔值 (bool) 等是不能够被申明的

增加了对返回类型声明的支持

declare(strict_types=1);

function add(int $a, int $b){

return $a+$b;

}

echo add(1,2);

echo add(1.5, 2.6);

null 合并运算符

项目中存在大量同时使用三元表达式和 isset () 的情况,新增了 null 合并运算符 (??) 这个语法糖。如果变量存在且值不为 NULL, 它就会返回自身的值,否则返回它的第二个操作数。

旧版:isset (

math?formula=_GET%20%5B%E2%80%98id'%5D)%20%3F_GET [id] : err;

新版:$_GET ['id'] ?? 'err';

通过 define () 定义常量数组

在 PHP 5.6 中仅能通过 const 定义常量数组,PHP 7 可以通过 define() 来定义。

define('ANIMALS',

['dog', 'cat', 'bird']);

echo ANIMALS[1];

// outputs "cat"

const name = ['1','2'];

echo name[1];

现在支持通过 new class 来实例化一个匿名类,这可以用来替代一些 “用后即焚” 的完整类定义

preg_replace_callback_array()

​ 新增了一个函数 preg_replace_callback_array (),使用该函数可以使得在使用 preg_replace_callback () 函数时代码变得更加优雅。在 PHP7 之前,回调函数会调用每一个正则表达式,回调函数在部分分支上是被污染了。

5、指针问题

$array = [1,2,3];

foreach ($array as $k=>&$v){

$v++;

}

var_dump($array);

foreach ($array as $k=>$v){

echo $v;

}

233

6、array_column()

返回输入数组中某个单一列的值。

array_column(array,column_key,index_key);

// 可能从数据库中返回数组

$a = array(

array(

'id' => 5698,

'first_name' => 'Peter',

'last_name' => 'Griffin',

),

array(

'id' => 4767,

'first_name' => 'Ben',

'last_name' => 'Smith',

),

array(

'id' => 3809,

'first_name' => 'Joe',

'last_name' => 'Doe',

)

);

$last_names = array_column($a, 'last_name', 'id');

print_r($last_names);

?>

结果

Array

(

[5698] => Griffin

[4767] => Smith

[3809] => Doe

)

7、取出前五通话记录

select name,count(*) as num from order

where date_sub(curdate(), INTERVAL 10 DAY) <= date(`created_at`)

group by name

order by num desc

limit 10;

8、php 扩展安装

//下载libevent扩展文件压缩包(在当前系统哪个目录下载随意)

~# wget http://pecl.php.net/get/libevent-0.1.0.tgz

//解压文件

~# tar -zxvf libevent-0.1.0.tgz

//进入源码目录

~# cd libevent-0.1.0/

//运行phpize命令,写全phpize的路径

~# /usr/local/php/bin/phpize

//运行configure命令,配置时 要将php-config的路径附上

~# ./configure --with-php-config=/usr/local/php/bin/php-config

//运行make命令

~# make

//测试编译安装

~# make test

//正式编译安装

~# sudo make install

//修改php.ini,结尾加入:extension=libevent.so

//重启对应的php-fpm

9、session 和 cookie 的关系

前提是服务端开启了session

1. 第一次访问页面时, 服务端生成一个不重复的sessionid(当前会话id)以及命名为sess_xxx的session文件

该session文件保存在php.ini文件中指定的目录, xxx是sessionid, sessionid可以通过session_id()函数来获取

2. 服务端向客户端返回响应, 其中有响应头Set-Cookie:PHPSESSID=xxx

3. 客户端收到Set-Cookie响应头, 将sessionid写入cookie, cookie的key为PHPSESSID, value为sessionid

比如PHPSESSID=jlis2mcmv6d5hejkemom77ibm3

4. 当第二次访问页面时, 客户端会把cookie放在请求头(Request Header)中, 服务端识别PHPSESSID这个cookie

然后根据这个cookie获取当前会话ID(sessionid), 从而找到对应的session文件, 再从session文件中读取信息

10、jsonp 原理

11、ajax 跨域

12、主从复制的原理

13、运算符优先级问题

$tmp = 0 == 'a' ? 1: 2;

echo $tmp;

?>

点关注,不迷路

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。之前说过,PHP方面的技术点很多,也是因为太多了,实在是写不过来,写过来了大家也不会看的太多,所以我这里把它整理成了PDF和文档,如果有需要的可以

07e80527e2b1

在这里插入图片描述

07e80527e2b1

在这里插入图片描述

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原生Ajax讲解

典型的http通信&#xff1a;浏览器向服务器发出请求&#xff0c;服务器向客户端返回响应&#xff0c;浏览器重新加载页面&#xff0c;这种不连续的页面加载方式导致用户的体验变得杂乱&#xff0c;缺乏连贯性。 如&#xff1a; 在一般的web应用程序中&#xff0c;用户填写表单字…

16、Python与设计模式--模板模式

一、股票查询客户端 投资股票是种常见的理财方式&#xff0c;我国股民越来越多&#xff0c;实时查询股票的需求也越来越大。今天&#xff0c;我们通过一个简单的股票查询客户端来认识一种简单的设计模式&#xff1a;模板模式。根据股票代码来查询股价分为如下几个步骤&#xff…

避免滥用子选择器

CSS的选择符是有权重的&#xff0c;当不同选择符的样式设置有冲突时&#xff0c;会采用权重高的选择符设置的样式。 如果CSS选择符权重相同&#xff0c;那么样式会遵循就近原则&#xff0c;哪个选择符最后定义&#xff0c;就采用哪个选择符的样式。 如果忽略了CSS选择符权重&am…

C++中的空类,默认产生哪些类成员函数?

class Empty { public:/*Empty();//默认构造函数Empty(const Empty& rhs);//拷贝构造函数~Empty();//析构函数Empty& operator(const Empty& rhs);//赋值函数Empty* operator&();//取地址运算符const Empty* operator&() const;//取址运算符 const */ prot…

php exist echo,PHP函数file_exists介绍

&#xfeff;定义和用法file_exists() 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true&#xff0c;否则返回 false。exists中文翻译为存在的意思。语法file_exists(path)例子Example #1<?phpecho file_exists("test.txt");?>输出&#x…

闭包应用之延迟函数setTimeout

根据HTML 5标准&#xff0c;setTimeout推迟执行的时间&#xff0c;最少是5毫秒。如果小于这个值&#xff0c;会被自动增加到5ms。 每一个setTimeout在执行时&#xff0c;会返回一个唯一ID&#xff0c;把该ID保存在一个变量中&#xff0c;并传入clearTimeout&#xff0c;可以清除…

并行编程2——多核体系架构

1.1 多核处理器定义 多内核处理器架构是指&#xff1a;芯片设计工程师在单个处理器中集成两个或多个 “执行内核&#xff08;即计算引擎&#xff09;”。多内核处理器可直接插入到单一处理器基座中。但是&#xff0c;操作系统会把它的每个执行内核作为独立的逻辑处理器&#x…

21:苹果和虫子2

团队QQ&#xff1a;466373640个人博客&#xff1a;www.doubleq.winc/noi/信息学奥数博客&#xff1a;http://www.cnblogs.com/zwfymqz 1:苹果和虫子2 查看提交统计提问总时间限制:1000ms内存限制:65536kB描述你买了一箱n个苹果&#xff0c;很不幸的是买完时箱子里混进了一条虫子…

php运行代码运行退出为0,php – Selenium测试用例返回进程以退出代码0结束

你使用“phpunit yourTestCase.php”而不是“php yourTestCase.php”吗&#xff1f;我使用phpunit(3.5.14)和“selenium-server-standalone-2.0rc2.jar”运行你的testfile,没有问题(除了测试本身失败)&#xff1a;PHPUnit 3.5.14 by Sebastian Bergmann.ETime: 10 seconds, Mem…

Xcode6中使用initWithTitle:title image:image selectedImage:自定义图片

使用xcode6来运行项目&#xff0c;发现使用原生的tabbar上的图片不显示了。这个问题是因为xcode6中的一些api方法被废弃了,同时tabbar上图片的渲染方式发生了改变。先看xcode6中的tabbar api方法的变更&#xff1a;- (void)setFinishedSelectedImage:(UIImage *)selectedImage …

[Node.js]get/post请求

摘要 在很多情况下&#xff0c;我们的web服务器都需要接受客户端浏览器传递的参数或者数据。最常见的是get和post请求。 获取get请求的内容 get请求传递的参数在url中&#xff0c;参数部分在?后面。因此可以手动解析后面的内容作为get请求的参数。node.js中url模块中的parse函…

MyEclipse10 Tomcat7 JDK1.7 配置

第一步.MyEclipse10 Tomcat7 JDK1.7下载 MyEclipse10http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/installers/myeclipse-10.0-offline-installer-windows.exe Tomcat http://tomcat.apache.org/ Java SE Development Kit 7 WINDOWS版 http://www…

类的静态成量变量必须初始化

因为类的静态成员变量是所有实例共用的.所以得在类外初始化. 调用的时候可以通过对象调用,也可以通过类直接调用 classA { public: inti; //有默认值}; classB { public: staticintn;staticA Aobj;}; intB::n 1; //静态成员变量的初始化A B::Aobj; //静态…

2阶节IIR算法C语言源码

纯C语言软件算法&#xff0c;没有做过多优化&#xff0c;只是实现了基本IIR算法 /****************************************************************************** * 二阶IIR滤波器单元,采用直接II型 * 由多个2阶节&#xff0c;可以组成更多高阶的滤波器 * 根据参数的不同&a…

HDU 3709 Balanced Number (数位DP)

题意 求出[x, y] 范围内的平衡数&#xff0c;平衡数定义为&#xff1a;以数中某个位为轴心&#xff0c;两边的数的偏移量为矩&#xff0c;数位权重&#xff0c;使得整个数平衡。 思路 外层枚举平衡点&#xff0c;然后数位DP即可。设计状态&#xff1a; dp[pos][o][left_right] …

跳過 Windows RT的UI

RT启动进入常规桌面 微软Surface RT发布的时间已经不短了&#xff0c;相信很多朋友都已经熟悉了这个全新的平板&#xff0c;并且已经上手。Surface RT开机默认进入的界面为Windows UI&#xff0c;这对于经常使用App的朋友来说并没有什么&#xff0c;但是对于那些经常使用Office…

matlab调用mstg,实验五 双线性变换法设计IIR数字滤波器

实验五 IIR 数字滤波器设计一、实验目的(1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法&#xff1b;(2)学会调用MATLAB 信号处理工具箱中滤波器设计函数设计各种IIR 数字滤波器&#xff0c;学会根据滤波需求确定滤波器指标参数。(3)掌握IIR 数字滤波器的MATLAB 实现方法…

Android知识点剖析系列:深入了解layout_weight属性

前言 Android中layout_weight这个属性对于经常捣鼓UI的我们来说&#xff0c;肯定不会陌生。但是我们在真正使用这个属性时&#xff0c;经常会出现一些莫名奇妙的布局效果&#xff1b;如果仅仅知其然而不知其所以然&#xff0c;一些意外的布局效果一定让我们颇为头疼。在本文中&…

C++ 中explicit的使用

C提供了关键字explicit&#xff0c;可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C中&#xff0c; 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数)&#xff0c; 承担了两个角色。1…

BZOJ 1026 windy数 (数位DP)

题意 区间[A,B]上&#xff0c;总共有多少个不含前导零且相邻两个数字之差至少为2的正整数&#xff1f; 思路 状态设计非常简单&#xff0c;只需要pos、limit和一个前驱数pre就可以了&#xff0c;每次枚举当前位时判断是否与上一位相差2即可。一个需要注意的地方是第一位不用比较…