php相关笔试题-(持续更新)

1.如果系统做了负载均衡(或者代理),服务端如何准确得获取用户端的IP?

答:在负载均衡服务器软件
(nginx,apache,tomcat)添加X-Forwarded-For,简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。

相关网站:https://blog.csdn.net/ai_zxc/article/details/78891019

 

2.如何实现精准的定时任务?

答:在Crontab中使用PHP执行脚本(或URL),其实方法很多,不过这个应该是比较好的。

相关网站:https://www.jb51.net/article/89186.htm

 

3.mysql中,如何判断一个字段是否创建索引?

答:show index from 数据库名.表名

 

4.mysql中,如何判断一个字段是否需要创建索引?

答:较频繁地作为查询条件的字段

相关网站:https://www.jb51.net/article/56532.htm

 

5.常见的web漏洞,并说明出现的原因和解决方案?

答:SQL注入漏洞、XSS、CSRF、上传漏洞、未加密登录请求 等等

相关网站:https://blog.csdn.net/qq_28061489/article/details/79572310,https://wenku.baidu.com/view/dbb0991afbd6195f312b3169a45177232f60e41c.html,https://blog.csdn.net/u013777676/article/details/52124298/

 

6.php中namespace的作用?

答:解决用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

相关网站:官网:http://php.net/manual/zh/language.namespaces.rationale.php,https://www.cnblogs.com/kuyuecs/p/3556421.html

 

7.列出redis支持的数据类型?

答:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

 相关网站:http://www.runoob.com/redis/redis-data-types.html

 

8.列出php中类的自动加载相关的函数名?

答: __autoload() 和 spl_autoload_register()

相关网站:官网:http://php.net/manual/zh/language.oop5.autoload.php

 

9.统计一个字符串在另一个字符串出现的次数?

答:

substr_count($haystack, $needle [,$offset [,$length]])

其中参数:
$haystack表示母字符串,$needl表示要查找的字符

$offset表示查找的起点,$length表示查找的长度,均为可选参数

相关网站:https://www.jb51.net/article/58015.htm

 

10.列出HTTP状态码,并简述意思,重小到大

答:1xx 消息;2xx 成功;3xx 重定向;4xx 请求错误;5xx服务器错误;(要注意下499,nginx的错误,可能是时间超时,内存溢出)

相关网站:http://www.runoob.com/http/http-status-codes.html,https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

 

11.如果后端有多台服务器,如何处理session?

答:

第一种办法:把原来存储在服务器磁盘上的session数据存储到客户端的cookie中去(加密后后存在cookie中,前端不开cookie就悲剧了)。

第二种办法:同一个用户的访问请求都被派送到同一个服务器上(某台机子挂掉了,就不行了)。

第三种办法:做一个中间层,专门来存储所有访问涉及到的session。也就是所有的session都存储在这里。服务器端统一从这里读取session数据。(可以保存在共享的文件服务器中、数据库中(nosql为好))

相关网站:https://www.cnblogs.com/wangtao_20/archive/2013/10/29/3395518.html

 

12.git的常用命令?

答:

git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来

git checkout -b dev 建立一个新的本地分支dev

git branch 查看本地所有分支

git status 查看当前状态 

git pull 拉取

git commit 提交 

git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。

git log 看你commit的日志

git add . 添加所有修改文件

git commit -m ‘修改内容’  提交添加文件,并备注提交版本

git diff  查看修改文件列表

相关网站:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html,https://blog.csdn.net/halaoda/article/details/78661334

 

13.用php代码去除HTML标签方法?

答:strtr()和strip_tags()

 

14.php的运行方式有哪些?

答:

1)CGI(通用网关接口/ Common Gateway Interface)。

2)FastCGI(常驻型CGI / Long-Live CGI)。

3)CLI(命令行运行 / Command Line Interface)。

4)Web模块模式(Apache、nginx、iis等Web服务器运行的模式) ,最常用的运行方式啦。

5)ISAPI(Internet Server Application Program Interface)微软提供的一套面向Internet服务的API接口。

相关网站:https://blog.csdn.net/xujingzhong0077/article/details/53316767,https://blog.csdn.net/s465564/article/details/77224627

 

15.php连接数据库的方式?

答:1)常用普通方法,mysql_connect()【 PHP 5.5.0 起已废弃】;2)面向对象方法(也可面向过程)mysqli();3)PDO;3)ADODB

参考网站:https://blog.csdn.net/wd2011063437/article/details/79003477,https://www.cnblogs.com/joshua317/articles/5989781.html

 

16.简述MySQL的InnoDB的四种事务隔离级别?

答:

1、读不提交(Read Uncommited,RU)

  这种隔离级别下,事务间完全不隔离,会产生脏读,可以读取未提交的记录,实际情况下不会使用。

2、读提交(Read commited,RC)

  本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会读到不同的结果(不重复读)

3、可重复读(Repeatable Read,RR)【MySQL 默认的级别】

  在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同一个事务同样的SELECT操作读到的结果会是一致的。但是,会有幻读现象

4、 串行化(SERIALIZABLE)。读操作会隐式获取共享锁,可以保证不同事务间的互斥

参考网站:https://www.cnblogs.com/huanongying/p/7021555.html

 

17.如何参看当前的mysql的事务隔离级别?

答:mysql> show variables like '%isolation%';

 

18.oop是什么?特点有哪些?

答:oop是面向对象编程。封装、多态、继承、易维护 。

 

19.接口安全方面是怎么处理的?

答:RSA双向加密,验证参数后才执行。添加时间戳,处理的时候判断时间,一般60秒,前端的请求加上时间戳,后台将时间戳解密后与后台的服务器作比较,时间差距超过60秒就不处理。

 

20.接口和抽象类的区别是什么?

答:

接口:是通过关键字 interface 来声明的,接口中的成员常量和方法都是 public 的,方法可以不写关键字public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。 

抽象类:是通过关键字abstract来声明的,是一种不能被实例化的类,只能作为其他类的父类来使用。抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法,抽象方法没有方法体,该方法天生就是要被子类重写的。

区别:抽象类和接口实现的功能十分相似,在应用中选择抽象类还是接口要看具体实现。 

1).对接口的继承使用implements,抽象类使用extends.

2).接口中不可以声明变量,但可以声明类常量.抽象类中可以声明各种变量

3).接口没有构造函数,抽象类可以有

4).接口中的方法默认为public,抽象类中的方法可以用public,protected,private修饰

5).一个类可以继承多个接口,但只能继承一个抽象类

参考网站:https://www.cnblogs.com/catcrazy/p/6289446.html

 

21.tcp/ip是什么?

 答:TCP(传输控制协议)和IP(网际协议),是两个协议,但是通常会合在一起说,因为他们要在一起才能形成现有的或联网底层。

 

22.udp是什么?

答:UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。

posted @ 2018-09-17 17:40  龙神天翼  阅读(163)  评论(0编辑  收藏  举报