PHP

最近一次的PHP面试题记录,office已到手!

2020-10-16  本文已影响0人  it阿布

1、explain 具体哪些等级

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

2、MySQL 优化

3、redis 支持哪些类型

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

4、PHP7 与 php5 的区别

declare(strict_types=1);
function add(int $a, int $b){
return $a+$b;
}

echo add(1,2);
echo add(1.5, 2.6);

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

旧版:isset (_GET [‘id']) ?_GET [id] : err;

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

在 PHP 5.6 中仅能通过 const 定义常量数组,PHP 7 可以通过 define() 来定义。
<?php
define('ANIMALS',
['dog', 'cat', 'bird']);
echo ANIMALS[1];
// outputs "cat"

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

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

5、指针问题

<?php
$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);

<?php
// 可能从数据库中返回数组
$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、运算符优先级问题

<?php
$tmp = 0 == 'a' ? 1: 2;
echo $tmp;
?>

点关注,不迷路

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

点击进入暗号: PHP+「平台」

在这里插入图片描述 在这里插入图片描述

更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

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

上一篇 下一篇

猜你喜欢

热点阅读