当前位置:首页 » 编程语言 » php中级面试题

php中级面试题

发布时间: 2025-04-29 04:21:26

1. 腾讯php面试题

腾讯php面试题

php程序员一般会遇到的面试题:

1. 基本知识点

HTTP协议中几个状态码的含义:503 500 401 200 301 302

Include require include_once require_once 的区别.

PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等。

HEREDOC介绍

写出一些php魔幻方法;

一些编译php时的configure 参数

向php传入参数的两种方法。

(mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;

error_reporting 等调试函数使用

您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

posix和perl标准的正则表达式区别;

Safe_mode 打开后哪些地方受限.

写代码来解决多进程/线程同时读写一个文件的问题。

写一段上传文件的代码。

Mysql 的存储引擎,myisam和innodb的区别。

2. web 架构,安全,项目经验

介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。

使用mod_rewrite,在服务器上没有/archivers/567.html这个物理文件时,重定向到index.php?id=567 ,请先打开mod_rewrite.

MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

写出一种排序算法(原理),并说出优化它的方法。

请简单阐述您最得意的开发之作

对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题

您是否用过模板引擎? 如果有您用的模板引擎的名字是?

请介绍Session的原理,大型网站中Session方面应注意什么?

测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。

正则提出一个网页中的'所有链接.

介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。

您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。

大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?

相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。

一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。

3. unix/linux 基本使用

linux下查看当前系统负载信息的一些方法。

vim的基本快捷键。

ssh 安全增强方法;密码方式和rsa key 方式的配置。

rpm/apt/yum/ports 装包,查询,删除的基本命令。

Makefile的基本格式,gcc 编译,连接的命令,-O0 和-O3区别。

gdb,strace,valgrind的基本使用.

4. 前端,HTML,JS

css盒模型。

javascript中的prototype。

javascript中this对象的作用域。

IE和firefox事件冒泡的不同。

什么是怪异模式,标准模式,近标准模式。

DTD的定义

IE/firefox常用hack.

firefox,IE下的前端js/css调试工具。

;

2. 谁能告诉我一些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

3. 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 有问题。

4. PHP面试题(附答案)

以下是一些常见的PHP面试题及其答案:

  1. FILE的含义及使用

    • 答案:__FILE__是一个魔术常量,返回文件的完整路径和名称,包含绝对路径。在PHP 4.0.2及以后的版本中总是如此,而在早期版本中可能为相对路径。
  2. 获取客户端IP地址

    • 答案:使用$_SERVER['REMOTE_ADDR']变量可以获取客户端的IP地址。
  3. 跳转页面的header函数示例

    • 答案:header;用于页面重定向。
  4. 去除HTML文本中的JS脚本

    • 答案:使用正则表达式如preg_replace</script>/is', '', $str);来去除HTML文本中的JS脚本。
  5. 删除数组中的空值

    • 答案:使用array_filter;函数可以过滤掉数组中的空值。
  6. 获取当前时间戳和前一天的时间格式化

    • 答案:$timestamp = time; echo date);。
  7. PHP编码转换函数

    • 答案:iconv用于字符编码转换,将字符串从UTF8编码转换为GBK编码。
  8. 字符串转数组

    • 答案:$arr = array_map);将逗号分隔的字符串转化为数组。
  9. serialize和unserialize功能

    • 答案:serialize用于序列化数据,将PHP的值或对象转换为一个可存储或传输的字符串表示;unserialize用于反序列化已存储的数据,将字符串恢复为PHP的值或对象。
  10. 指定月的天数查询函数

    • 答案:function daysInMonth { return date); }。该函数返回指定年份和月份的天数。
  11. 获取文件扩展名

    • 答案:$ext = pathinfo;。使用pathinfo函数获取文件路径信息,并通过PATHINFO_EXTENSION参数获取文件扩展名。
  12. PHP模板引擎使用经验

    • 答案:常用的PHP模板引擎有Smarty、Twig以及ThinkPHP自带的模板引擎等。模板引擎可以提高代码的可读性和可维护性,将前端页面与后端逻辑分离。
  13. 类的实例化及操作

    • 答案:创建一个类class MyClass { public $attr; function __construct { $this>attr = 'example' } public function myMethod { echo $this>attr; } },然后实例化并调用方法:$obj = new MyClass; $obj>myMethod;。
  14. MySQL数据库操作示例

    • 答案:可以使用mysqli或PDO连接MySQL数据库。具体连接和操作的代码略,但通常包括连接数据库、执行SQL语句和处理结果集等步骤。
  15. SQL操作实例

    • 答案:SQL操作包括插入、查询、删除和清空等操作。具体编写依赖于数据库连接和所使用的SQL语句。例如,插入操作可以使用INSERT INTO语句,查询操作可以使用SELECT语句等。

5. 37道PHP面试题(附答案)

以下是37道PHP面试题及简洁答案概述:

  1. 面向对象是什么?

    • 答案:面向对象是通过封装、继承和多态提高程序复用性和清晰性的设计方法。
  2. SESSION与COOKIE的区别?

    • 答案:SESSION依赖cookie传递,存储在服务器,安全但消耗资源;COOKIE保存在客户端,易被篡改。
  3. HTTP状态代码302、403、500、401分别代表什么?

    • 答案:302代表临时重定向;403表示禁止访问;500表示服务器内部错误;401代表未授权。
  4. 常见的数据类型有哪些?varchar与char的区别是什么?

    • 答案:数据类型包括int、char、varchar、datetime和text等。varchar与char的区别在于存储空间:varchar动态分配,char固定长度。
  5. MyISAM与InnoDB的区别?

    • 答案:MyISAM适合频繁查询,不支持事务;InnoDB支持事务,适合大量插入和更新,但占用空间大,不支持全文索引。
  6. isset与empty的区别?

    • 答案:isset检查变量是否存在,可传递多个变量;empty判断变量是否为空,只接受一个变量。
  7. PHP中按值传递和按引用传递的区别?

    • 答案:按值传递在函数外部忽略修改;按引用传递则反映外部修改,根据操作需求选择传递方式。
  8. error_reporting函数的作用?

    • 答案:设置PHP错误报告级别,并显示当前级别的错误。
  9. 什么是缓存技术?

    • 答案:缓存技术是存储动态内容以减少数据库访问,提高页面响应速度。
  10. MVC结构包括哪些部分?其优点是什么?

    • 答案:MVC结构包括业务模型、视图和控制器。优点是代码重用、分离视图和业务逻辑。
  11. AJAX的优势是什么?

    • 答案:异步更新、减轻服务器压力、提升用户体验。
  12. 如何优化程序效率?

    • 答案:包括优化SQL、创建索引、缓存数据和合理架构。
  13. 解决大流量问题的策略有哪些?

    • 答案:使用缓存、负载均衡、CDN加速和减少数据库使用。
  14. include与require的区别?

    • 答案:require在失败时会中断执行,include则不会。可用require_once和include_once避免多次包含。
  15. @foo与foo的区别?

    • 答案:@foo忽略警告,foo则不会忽略。
  16. PHP的垃圾收集机制是怎样的?

    • 答案:通过refcount跟踪变量引用,当引用计数为0时释放内存。
  17. 如何确保程序安全?

    • 答案:避免SQL注入和XSS攻击,过滤用户输入,保护服务器细节。
  18. echo、print_r、var_mp、print的区别?

    • 答案:echo用于输出;print_r和var_mp用于打印变量结构;print有返回值,var_mp更详细。
  19. Smarty模板的特点是什么?

    • 答案:速度快、编译型、缓存、插件支持和强大逻辑。
  20. PHP页面跳转的方法有哪些?

    • 答案:包括header函数直接跳转、meta标签刷新和模板跳转。
  21. 如何使用iconv函数转换字符编码?

    • 答案:使用iconv函数将GB2312格式字符串转换为UTF8。
  22. 如何处理用户输入以防止XSS攻击?

    • 答案:入库前使用htmlspecialchars或htmlentities处理用户输入。
  23. CSRF攻击和XSS攻击分别是什么?如何防范?

    • 答案:CSRF攻击模拟用户请求,XSS攻击注入恶意脚本。防范方法包括验证token和过滤输入。
  24. 开发PHP应用时需关注哪些安全机制?

    • 答案:防止远程提交、SQL注入、验证码等。
  25. JSON是什么?

    • 答案:JSON是轻量级数据交换格式,易于跨语言传输。
  26. 事务具有哪些特性?

    • 答案:事务具有原子性、一致性、隔离性和持久性。
  27. 锁在数据库中的作用是什么?

    • 答案:锁用于并发控制,保证数据库一致性,包括行级锁和表级锁。
  28. 索引的作用及其缺点?

    • 答案:索引加速数据检索,但增加存储和写入开销。
  29. 范式理论是什么?

    • 答案:范式理论解释了数据结构的规范化,减少数据冗余。
  30. 主键、外键和索引的作用分别是什么?

    • 答案:主键用于唯一标识记录;外键用于关联关系;索引用于加快查询速度。
  31. private、protected和public修饰符的作用?

    • 答案:分别定义不同权限范围的类成员。
  32. 堆和栈的区别是什么?

    • 答案:堆动态分配内存,栈在编译时分配内存。
  33. 魔术方法是什么?

    • 答案:魔术方法如construct、destruct等在特定场景下自动执行。
  34. $this、self、parent的区别和使用场景?

    • 答案:$this代表当前对象;self代表当前类;parent代表父类,根据需要选择使用。
  35. 作用域操作符::的作用?

    • 答案:用于访问类常量和静态方法。
  36. __autoload函数的作用?

    • 答案:自动加载类,当实例化未引入的类时执行。
  37. 高并发网站的解决方案涉及哪些方面?

    • 答案:涉及前端、服务端、数据库和服务器层面的优化。

6. php面试题get和post的区别

1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如http://www.domain.com/test.asp?name=51js&password=51js,数据都会直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理

2、 Get 方式需要使用 Request.QueryString 来取得变量的值;而 Post 方式通过 Request.Form 来访问提交的内容

3、Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击,根据微软方面的说法,微软对用 Request.Form() 可接收的最大数据有限制,IIS 4 中为 80 KB 字节,IIS 5 中为 100 KB 字节

建议:除非你肯定你提交的数据可以一次性提交,否则请尽量用 Post 方法

4、Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题是,该页面如果刷新的时候,会弹出一个对话框

建议:出于安全性考虑,建议最好使用 Post 提交数据
***********************************
在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的。Form提供了两种数据传输的方式——get和post。虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响。虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的。
Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:
1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
6、Get是Form的默认方法。
*.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
*.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
*.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
网页表单当中的get方式和post方式的区别
1、get方式可传递的数据量有限,大约是2K左右,而post在iis5当中则达到100k,一般人们可以默认post是无限制的;
2、get方式在提交帐号密码等表单时不如post方式安全。在get提交表单以后浏览器的url会将你提交的表单参数全部显示在地址栏当中,而且可以通过机器的缓存来直接查看到各项参数;而post方式则不会;
3、get方式在后台处理页面用Request.QueryString接收各个参数;而post则用Request.Form获取;
4、get方式会忽略<form action="a.asp?a=a"里边的"a=a"这个参数;而post方式则不会

热点内容
linuxiperf 发布:2025-04-29 08:09:43 浏览:258
路由器密码在哪里能看见 发布:2025-04-29 07:34:25 浏览:856
安卓手机软件不想升级怎么办 发布:2025-04-29 07:23:16 浏览:622
theforest服务器如何开 发布:2025-04-29 07:23:15 浏览:620
图书直播脚本规划表 发布:2025-04-29 07:18:38 浏览:360
唱吧不上传可以分享吗 发布:2025-04-29 06:56:49 浏览:650
存储设备电视机 发布:2025-04-29 06:49:13 浏览:883
专破加密的wifi手机版 发布:2025-04-29 06:40:21 浏览:116
ftp传输模式命令 发布:2025-04-29 06:40:20 浏览:804
请求分页式存储管理 发布:2025-04-29 06:38:44 浏览:181