关于php:2020年10月php面试笔记

1.请阐明目前PHP最新版本的版本号和新个性

2.简要阐明PHP的垃圾回收机制

垃圾回收机制是一种动态存储分配计划.它会主动开释程序已调配的不在须要的内存块.主动回收内存的过程叫垃圾收集.

参考:浅析 PHP7 的垃圾回收机制

3.列举相熟的PHP框架,并说出该框架的特点

4.常见的状态码,阐明其含意

5.解释:脏读,幻读,不可反复读

脏读:脏读是指一个事务中拜访到了另一个事务未提交的数据.

幻读:一个事务读取2次,失去的记录条数不统一,因为2次读取之间另外一个事务对数据进行了增删.

不可反复读:一个事务读取同一条记录2次,失去的后果不统一,因为2次读取之间另外一个事务对此行数据进行了批改.

补充:

数据库事务的特点:ACID

原子性(A Atomicity):事务是一个原子性的操作单元,事务外面对数据库的操作,要么都执行,要么都不执行.

一致性(C Consistent):在事务开始之前和完结之后,数据都必须保持一致状态,必须保障数据库的完整性.也就是说,数据必须合乎数据库的规定.

隔离性(I ioslation):数据库容许多个并发事务同时对数据进行操作,事务之间是互相独立的,事务处理的中间状态对其余事务是不可见的,以此防止出现数据不统一状态.

MySQL中4个事务隔离级别,隔离级别由低到高:隔离级别越高,越能保证数据的完整性和一致性,但对并发性能影响也越大.

读未提交(Read uncommitted),读已提交(Read committed),可反复读(Repeatable read),可串行化(serializable)

应用 _select @@tx_isolation;_ 能够查看 MySQL 默认的事务隔离级别。

不同的事务隔离级别会导致不同的问题:

持久性(D Durable):一个事务完结后,其对数据库的批改是永久性的,即便系统故障也不会失落.

6.具体阐明rsync命令和理论利用

rsync是开源的,疾速,多功能的,可实现全量及增量的本地或近程数据同步工具,实用于linux,unix,window等多种操作系统平台.能够当做文件复制工具,代替mv和cp.

常用命令:



1.  rsync -av source destination  //除了能够递归同步以外,还能够同步元信息(比方批改工夫、权限等),
    
2.  目标目录destination如果不存在,rsync 会主动创立。执行下面的命令后,
    
3.  源目录source被残缺地复制到了目标目录destination上面,即造成了destination/source的目录构造。
    

5.  如果只想同步源目录source外面的内容到目标目录destination,则须要在源目录前面加上斜杠。
    
6.  $ rsync -a source/ destination
    
7.  下面命令执行后,source目录外面的内容,就都被复制到了destination目录外面,
    
8.  并不会在destination上面创立一个source子目录。
    

11.  rsync 除了反对本地两个目录之间的同步,也反对近程同步。它能够将本地内容,同步到近程服务器。
    
12.  $ rsync -av source/ username@remote_host:destination
    

14.  也能够将近程内容同步到本地。
    
15.  $ rsync -av username@remote_host:source/ destination
    

参考:rsync 用法教程

备份数据的重要性以及rsync的根本应用  

1)可使本地和近程两台主机之间的数据疾速复制同步镜像,近程备份的性能,这个性能相似ssh带scp命令,但又优于scp命令的性能,scp每次都是全量拷贝,而rsync能够增量拷贝。

2)rsync还能够在本地主机的不同分区或目录之间全量及增量的复制数据,

3)利用rsync还能够实现删除文件和目录的性能。相当于rm

4)rsync相当于scp,cp.rm然而还优于他们每一个命令。

数据备份的形式

  • 全量备份 — 会将所有的数据进行备份,效率比拟低下
  • 增量备份 — 只是将变动的数据进行备份,效率比拟高,并且适宜进行异地备份
rsync -avzP -e 'ssh -i /home/vagrant/.ssh/new*vidat.pem' test2 centos@18.*.*.34:/home/wwwroot/default/test  //近程拷贝文件,相当于scp

7.阐明app与服务器之间通信的平安机制

  • 防非法调用——身份认证
  • 防抓包——数据加密
  • 防重放攻打——工夫戳+随机字符串
  • 防篡改——签名机制
  • HTTPS协定进行通信

Token身份验证机制 : 避免歹意刷接口,能够反查调用者信息,封账号或token生效

对称加密: 

对称加密:对称加密是一种可逆的加密算法,其中“对称”的意思是加密过程和解密过程应用的是同一个密钥,常见的对称加密算法有DES、3DES、AES、IDEA等。

对称加密算法的特点

对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。对称加密算法的安全性依赖于密钥,任何人只有拿到密钥就能对数据进行加解密操作。

因为参加通信的单方都须要持有密钥,任何一方的秘钥泄露,那么单方的通信将无安全性可言所以怎么平安的保留和传递密钥是应用对称加密最须要关注的问题

非对称加密:

非对称加密指的是加密过程和解密过程应用不同的密钥,非对称加密算法须要一对密钥(公钥和私钥),公钥用来加密数据、私钥用来解密数据

常见的非对称加密算法有RSA、ECC、ElGamal等。

非对称加密算法特点

非对称加密算法应用公钥加密、私钥解密,私钥不须要公开传输所以安全性较高。同时私钥能够对数据进行签名、公钥能够用来验证签名,能够解决中间人攻打和信息被篡改的问题。

因为加解密过程应用不同的密钥,所以对大量数据进行加解密运算的话速度是比较慢的,通常状况下非对称加密算法只适宜对大量数据进行加解密操作。

对称加密算法运算速度快但安全性有余、非对称加密算法安全性高但运算速度慢.那咱们能够将两者联合一下:用对称加密算法加解密数据这样能够保障运算速度,用非对称加密算法加密对称加密算法的密钥这样能够兼顾密钥的安全性。

防重放攻打:

防重放攻打:拦挡到申请之后只需再原样发送该申请到服务端就能够发动重放攻打,如果接口内有一些查库之类的比拟耗性能的逻辑,那么在短时间内发动大量重放攻打的话将会间接导致服务端解体。

咱们只须要保障申请只能被正确处理一次即可,这里咱们采纳工夫戳+随机字符串的解决方案

在申请中退出工夫戳与随机字符串之后,服务端收到申请后会首先对工夫戳和随机字符串进行校验,校验通过才会执行失常的业务解决逻辑。

参考: 如何保障APP与服务端通信安全 

8.svn和git区别,列举罕用的git命令,重点阐明git中merge和rebase的区别

9.PHP写出疾速排序的算法

(1)疾速排序算法是对冒泡算法的一个优化。他的思维是先对数组进行宰割, 把大的元素数值放到一个长期数组里,把小的元素数值放到另一个长期数组里(这个宰割的点能够是数组中的任意一个元素值,个别用第一个元素,即$array[0]),而后持续把这两个长期数组反复下面拆分,最初把小的数组元素和大的数组元素合并起来。这里用到了递归的思维。



1.  //疾速排序
    
2.  function quickSort($arr)
    
3.  {
    
4.      if (!isset($arr[1])) {
    
5.          return $arr;
    
6.      }
    

8.      $mid = $arr[0];
    
9.      $leftArr = [];
    
10.      $rightArr = [];
    

12.      foreach ($arr as $value) {
    
13.          if ($value > $mid) {
    
14.              $rightArr[] = $value;
    
15.          }
    

17.          if ($value < $mid) {
    
18.              $leftArr[] = $value;
    
19.          }
    
20.      }
    
21.      $leftArr = quickSort($leftArr);
    
22.      $leftArr[] = $mid;
    

24.      $rightArr = quickSort($rightArr);
    
25.      return array_merge($leftArr, $rightArr);
    
26.  }
    

28.  $arr = [2, 4, 88, 33, 44, 5];
    
29.  print_r(quickSort($arr));
    
30.  //后果:Array ( [0] => 2 [1] => 4 [2] => 5 [3] => 33 [4] => 44 [5] => 88 )
    

10.用PHP写一个算法判断一个整数是否是回文数,思考CPU和内存使用率最低

11.用装璜器模式写出具备房产销售性能的简略代码

12.设计高并发场景下的CRM软硬件架构

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理