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协议一样用于处理数据包,是一种无连接的协议。