php高级面试题,高级php常见面试题
老铁们,大家好,相信还有很多朋友对于php高级面试题和高级php常见面试题的相关问题不太懂,没关系,今天就由我来为大家分享分享php高级面试题以及高级php常见面试题的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
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面试题
腾讯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调试工具。
;
php面试题get和post的区别
1、Get方法通过 URL请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action属性所指程序的 url后,如,数据都会直接显示在 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方式则不会
好了,文章到此结束,希望可以帮助到大家。