题集网上有一套php的面试题:http://www.tijee.com/tags/46-php-face-questions/posts
② 2022年PHP面试题大全(值得收藏)
求职 PHP 相关岗位,面试与笔试中的表现不仅考验口语能力,更关键的是技术实力。掌握最新的 PHP 面试题将大大提高求职效率。以下是一些精选的面试题,旨在帮助你顺利进入理想公司,获得理想薪酬:
更多内容,包括 MySQL 存储引擎的区别和网站流量管理策略,可以点击相关链接获取 PDF 版本的面试题大全。
③ PHP 考试系统怎么生成随机试题,求代码写法.以选择题为例说明一下就行,假如从10个里抽3个,怎么在提交之
很简单,给你一个思路
你在数据库里面放10个题,
id questions options right_answer
1 china 是指哪个国家? A:中国;B:日本;C:美国 A
... ................ ............. ...
这样你从数据库中读取全部数据出来;
为了实现随机性,你可以用一个数组
<?php
$query=$mysql_query("select * from '表名'");
$results=$mysql_fetch_row($query);
$rand=array_rand($results,3);//取出随机的三个问题,注意这里取得是三个键值
$question=array($result[$rand[0]],$result[$rand[1]],$result[$rand[2]]);//将取出的三个问题放进一个数组中
?>
<form action="目标地址(此处用本页面地址)" method="post">
<?php
foreach($question as $values)
{
$options=explode(";",$values['options']);//用“;”将选项分割存进数组
echo $values['questions'];//显示题目
for($i=0;$i<count($options);$i++){
echo "<input type='radio' name=".$choice[$valest['id']]." value='A' >".$options[i]." /><br>";//输出选项
}
echo "----------------------------------------";//题目之间分隔符
}
//下面的代码是你接受form表单的页面,如果是本页面就直接接着上面的代码写
if(!empty($_POST[$choice]))
{
foreach($_POST[$choice] as $key=> $data)
{
$question_id=$key;
$user_choice=$data;
if(mysql_query("select * from '表名' where id=".$key."and right_answer='".$data."'"))
{
//答案对如何处理。。。。
}
else
{
//答案不对处理办法。。。。
}
}
}
?>
</form>
随手现写的代码,可能你里面有错误,但是思路你可以借鉴下~
④ PHP中高级面试题 – 第一天
一、写一个函数,获取一篇文章内容中的全部图片,并下载
二、什么是 CSRF 攻击?XSS 攻击?如何防范?
CSRF:跨站请求伪造,可以通过通过判断来源和加 Token 的方式来防范。
XSS:跨站脚本攻击,可以通过对内容转义和过滤来防范,还有 CSP
三、应用中我们经常会遇到在 user 表随机调取 10 条数据来展示的情况,简述你如何实现该功能。
四、MYSQL 中主键与唯一索引的区别
主键:绝对不能有空值。唯一索引:可以有空值
五、http 与 https 的主要区别
关键是 S 上。简而言之,https 建立连接后要先把 SSL 的证书发下去,有了公钥和私钥,就可以解密了。
六、两台 mysql 服务器,其中一台挂了,怎么让业务端无感切换,并保证正常情况下讲台服务器的数据是一致的
不是核心业务的话,先停写,把备机拉起来,查看两台机器的日志,进行数据补偿,开写。
如果是核心业务的话,现在所有的操作都在正常的状态机器上。把好的这台机器的备机拉起来,当主机。
以上全是应急操作。实际上数据库的容灾设计要复杂得多。
面试官要是问你,备机的数据不一致怎么办,你要勇敢怼回去,你们每秒多少写入操作。按照百万级表,每秒 1000 的写入效率,正常的设计是,分布在 2 台机器上每台 500。这个级别的数据同步,出现差异的概率 可以忽略不计的。有一台出现问题,另一台也可以抗住。
(正常的操作,还是先停写,等数据一致,切换,开写。我们公司搞这些切换都是在凌晨 4.00 左右,核心业务的每秒写操作,只有十几个。前后耽搁不到 20 秒)。
七、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水之后,会在 24 小时后死亡,问:最少用几只小白鼠可以在 24 小时后找到具体是哪一瓶水有毒。
答案:四只
二进制问题。薛定谔的老鼠。
一只老鼠有两个状态,死活,对应 01。假设老鼠的个数为 A,则有 2^A>=10; A=4;
思路很简单,十瓶药编号:0,1,10,11….1001;
0 不喝。第一只老鼠喝所有个位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。
24 小时后,看下死了的是 1,活着的是 0。按老鼠的顺序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有问题。
⑤ 谁能告诉我一些PHP开发常见的面试题呢
1、表单提交get和post有何区别?
答:get的方式是把数据在地址栏中发送,get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
2、用PHP打印出前一天的时间格式是2006-5-1022:21:21
复制代码代码示例:
echo date("Y-m-dH:i:s",time()-(3600*24));或echodate("Y-m-d H:i:s",strtotime("-1 day"));
3、php中include和require的区别?
这两种结构除了在如何处理失败之外完全一样。include()产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在遇到丢失文件时停止处理页面就用 require()。include() 就不是这样,脚本会继续运行。
4、echo(),print(),print_r()的区别
echo可以接多个参数,print只能接一个参数,它们都是PHP的语言结构,print_r是递规打印,用来打印数组或对象
5、能够使HTML和PHP分离开使用的模板
smarty,phplib,SmartTemplate
6、如何理解MVC模式?
首先说一下框架,框架:就是别人把一些底层,常用操作.比如数据操作(增,删,改,查)写好.你来直接用.其它的功能要自己来做。
MVC:设计模式,M模型,V显示,C控制.现在许多框架都是基于MVC来做的把逻辑和显示分开.比如你要换页面,只需要改V里面的东西并不需要再去变动程序!(详细的东西可以上网上查一下)
7、如何实现PHP、JSP交互?
PHP提供了支持JAVA的类库文件,或者通过HTTP协议来交互数据
8、使用哪些工具进行版本控制?
VSS,CVS,SVN
http://www.jbxue.com/php/25446.html
⑥ 2022年PHP面试题附答案(实战经验)
1、面向对象是一种程序设计方法,它提升了代码的重用性和清晰度。主要特征包括封装、继承和多态性。
2、SESSION和COOKIE的区别在于,SESSION存储在服务器端,而COOKIE保存在客户端。SESSION相对安全,因为可以通过某些手段修改COOKIE,而SESSION依赖于COOKIE传递信息。禁用COOKIE后,SESSION无法正常工作。然而,SESSION需要服务器资源读取,且文件路径由php配置文件指定,文件是公有的。
3、HTTP状态码302表示临时重定向成功,即请求内容已转移到新位置。403表示禁止访问,500表示服务器内部错误。
4、数据类型包括:整数(int)、定长字符(char)、变长字符(varchar)、日期时间型(datetime)和文本型(text)。VARCHAR与CHAR的区别在于,CHAR是固定长度的字符类型,而VARCHAR是可变长度的,能更有效地节省空间。然而,处理VARCHAR类型时,服务器需要进行额外的操作,导致效率较低。
5、MyISAM和InnoDB之间的基本区别在于,MyISAM不支持事务处理,表锁,且易产生碎片,但读写速度较快,适合频繁查询应用。而InnoDB支持事务,行锁,有崩溃恢复能力,适合插入和更新操作较多的应用,尽管空间占用更大,不支持全文索引。
6、isset()函数用于判断变量是否存在,可以同时检查多个变量,而empty()则判断变量是否为空。
7、在PHP中,传值和传引用的区别在于,按值传递时,函数范围内的值更改不会影响外部变量;按引用传递时,函数范围内的值更改会影响到外部变量。
8、error_reporting函数用于设置PHP的报错级别,并返回当前级别。
9、缓存技术是将动态内容缓存在文件中,在一定时间内访问动态页面时直接调用缓存文件,避免重新访问数据库。
10、MVC结构分别指业务模型、视图和控制器,通过控制器调用模型处理数据,并将数据映射到视图层显示,以实现代码重用性和M和V的代码分离。
11、AJAX是一种异步传输技术,能够通过JavaScript实现局部刷新,减轻服务器压力,提高用户体验。
12、提高程序运行效率的方法包括优化SQL语句、创建索引、生成缓存等。
13、对于大流量网站,采用缓存、负载均衡、CDN存储加速、减少数据库使用、查看瓶颈及反向代理等方法解决访问量问题。
14、include和require的区别在于,include在失败时产生警告,而require则产生错误中断。require_once和include_once可以避免重复包含同一文件。
15、foo()和@foo()的区别在于@代表忽略所有警告。
16、PHP的垃圾收集机制回收不再使用的变量容器,确保内存的有效使用。
17、实现PHP安全的最大化,避免SQL注入和XSS攻击,需遵循基本原则:不展示服务器或程序细节,不相信用户提交的数据。
18、echo用于简单输出,print是函数且有返回值,print_r和var_mp用于打印数组和对象,同时提供数据类型信息。
19、Smarty模板速度快,支持编译型、缓存技术、插件机制和强大的表现逻辑。
20、PHP通过header函数实现页面跳转,可以设置跳转的网址或延迟时间。还可以利用meta元素实现跳转。
21、将GB2312格式的字符串转换为UTF-8格式,可以使用iconv函数。
22、在数据入库前,使用htmlspecialchars或htmlentities函数处理用户输入内容,避免SQL注入和XSS攻击。
23、CSRF攻击是跨站请求伪造,XSS攻击是跨站脚本攻击,防范策略包括合理规范API请求、使用token验证和过滤输入。
24、在开发中,注意防远程提交、防SQL注入、防止注册机灌水和使用验证码等安全机制。
25、JSON是一种轻量级数据交换格式,json数据格式固定,适用于多种语言的数据传递。
26、事务是一系列数据库操作的逻辑单位,具有原子性、一致性、隔离性和持久性。
27、锁是实现数据库并发控制的技术,确保数据库状态的一致性。
28、索引加速数据检索,提高查询效率,但也减慢数据录入速度并增加数据库尺寸。
29、三个范式的定义涉及属性的原子性、记录的唯一性及字段的冗余性。
30、主键、外键和索引的区别在于定义、作用和个数。
31、private、protected和public修饰符分别代表私有、保护和公共访问权限。
32、堆和栈的区别在于堆是动态分配的内存空间,而栈是静态分配且大小明确。
33、魔术方法包括实例化、析构、属性设置、属性获取、条件检查、序列化、克隆等。
34、$this、self和parent分别代表当前对象、当前类和当前类的父类。
35、::操作符用于调用类常量和静态方法。
36、__autoload()函数在类实例化时自动加载类文件。
37、高并发网站解决方案包括前端优化、服务端优化、数据库优化和Web服务器优化。
38、PHP遍历文件夹下所有文件的方法,可以通过递归函数实现。
39、在命令行中运行php程序的步骤包括显示当前PHP版本、加载有效模块、输出phpinfo、传递参数等。
40、检查PHP脚本和数据库SQL效率的方法包括代码计时、xdebug分析、系统调用跟踪等。
41、大流量网站访问量统计问题的解决方案包括确认服务器负载、优化数据库访问、防止盗链、控制文件下载等。
42、MySQL数据库优化策略涉及数据库结构设计、字段类型选择、添加索引、主从读写分离、分表等。
43、MyISAM和InnoDB存储引擎的区别包括事务支持、性能、索引类型等。