2020 PHP面试题目

1、UDP和TCP有什么区别

答:1)连接方面区别:

             TCP面向连接(如打电话要先拨号建立连接)

             UDP是无连接的,即发送数据之前不需要建立连接

        2)安全方面的区别:

             TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达

     UDP尽最大努力交付,即不保证可靠交付

   3)传输效率的区别:

             TCP传输效率相对较低

             UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信

        4)连接对象数量的区别

             TCP连接只能是点到点,一对一的

     UDP支持一对一,一对多,多对一和多对多的交互通信

 

2、MySQL、MySQLi和PDO的区别

答: 1)mysql扩展提供了一个面向过程的接口;并且是针对Mysql4.1.3或更早版本设计的,因此这个扩展虽然可以与mysql4.1.3数据库服务端进行交互,但是不支持后期版本的mysql服务端的某些特性

        2)mysqli扩展,我们有时称之为mysql增强扩展,可以用于使用mysql4.1.3或更新版本中新的高级特性;mysqli扩展有一系列的优势,相对于mysql扩展的提升主要有:面向对象接口、prepared语句支持、多语句执行支持、事务支持、增强的调试能力、嵌入式服务支持

   3)PHP数据对象,是PHP应用中的一个数据库抽象层规范,PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要连接的数据库服务器系统类型,也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器。

  PDO是PHP5.1之后才支持的,他为访问数据库采用了一致性的接口,在链接Mysql上几乎没有区别,PDO的性能损失可以忽略不计,同时具有mysql扩展库所不具备的优点

  1:PDO真正的以底层实现的统一接口数据操作接口

  2:PDO支持更高级的DB特性操作,如:存储过程的调度等,mysql原生库是不支持的

  3:PDO是PHP官方的pecl库,兼容性稳定性必然要高于mysql Extension,可以直接使用pecl upgrade pdo命令升级

 

3、MVC、面向对象、面向切面的理解

答: MVC:模型-》视图-》控制器,是常见的软件设计架构,用一种业务逻辑、数据、界面显示分离的方式组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制页面及用户交互的同事,不需要重新编写业务逻辑。

  面向对象:简称OOP,三大特性,封装、继承、多态

  封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性

  继承:提高代码复用性,继承是多态的前提

  多态:父类或接口定义的引用变量可以指向子类或具体实现类的实力对象,提高了程序的扩展性

  面向切面:是一种针对业务处理过程中的切面进行提取,它面对的是处理过程中的某个步骤或阶段,以达到在逻辑过程中的各部分之间低耦合性的代码隔离效果

 

4、列出常见数组函数,各自有何作用?

答: array_flip() :交换数组中的键和值

        array_diff() :返回两个数组的差集数组

        array_diff_key():比较键名,并返回两个数组的差集数组

   array_column():返回输入数组中某个单一列的值

   array_merge():把一个或多个数组合并为一个数组

   array_pop():将数组最后一个单元弹出(出栈)

        array_push():将一个或多个单元压入数组的末尾(入栈)

        array_rand():从数组中随机选出一个或多个元素,并返回键值

        array_unique():删除数组中重复的值

   in_array():检查数组中是否存在指定的值

        array_values():返回数组中所有的值,不包括键值名

        array_key_exists():检查给定的键名或索引是否存在于数组中

 

5、Session的默认保存路径

答:在Linux中是  /tmp 或 /var/lib/php/session,在Windows中是 C:\Windows\Temp 

 

6、Linux从nginx访问日志里面找出访问次数最多的10个IP,倒序排序,命令怎么写

答:awk '{print $1}' /usr/local/webserver/logs/error.log | sort | uniq -c | sort -nr| head -n 10

1)sort命令:
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
  -b:忽略每行前面开始出的空格字符;
  -c:检查文件是否已经按照顺序排序;
  -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
  -f:排序时,将小写字母视为大写字母;
  -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
  -m:将几个排序号的文件进行合并;
  -M:将前面3个字母依照月份的缩写进行排序;
  -n:依照数值的大小排序;
  -o<输出文件>:将排序后的结果存入制定的文件;
  -r:以相反的顺序来排序;
  -t<分隔字符>:指定排序时所用的栏位分隔字符;

2)uniq命令:
uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用
  -c或-count:在每列旁边显示该行重复出现的次数;
  -d或–repeated:仅显示重复出现的行列;
  -f<栏位>或–skip-fields=<栏位>:忽略比较指定的栏位;
  -s<字符位置>或–skip-chars=<字符位置>:忽略比较指定的字符;
  -u或——unique:仅显示出一次的行列;
  -w<字符位置>或–check-chars=<字符位置>:指定要比较的字符。

3)head命令:
head用来显示文件的开头至标准输出中,默认head命令打印其相应文件的开头10行
  -q 隐藏文件名
  -v 显示文件名
  -c 显示字节数
  -n 显示的行数

举例:
head -n 5 log4j.log 显示文件的前n行命令
head -n -6 log4j.log 输出文件除了最后n行的全部内容

posted @ 2020-01-05 13:47  Mr_Echo  阅读(441)  评论(0编辑  收藏  举报