php数据类型面试问题 php数据类型面试问题有哪些

PHP中高级面试题 – 第一天

一、写一个函数,获取一篇文章内容中的全部图片,并下载

成都创新互联公司专注于企业营销型网站建设、网站重做改版、泾源网站定制设计、自适应品牌网站建设、html5商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为泾源等各大城市提供网站开发制作服务。

二、什么是 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,

var x=document.getElementById("img1");

var title=document.getElementById("img1").title;

var sina_title=document.getElementById("img1").sina_title;

2,serialize(),unserialize();

3,编码方式不同,urlencode()将字串以URL编码。例如空格就会变成加号。

rawurlencode()将url编码成url的字符串专用格式,特殊字符回转换成百分号后面加两个十六子介数字的格式。

4,strip_tags(),html_entity_decode();

5,$str=preg_replace("/\script.*\.*\\/script\/i","",$str);

6,左连接,左连接的表如果没有匹配的数据不影响结果。

7

SELECT name,score FROM tl_user LEFT JOIN tl_score ON tl_user.ID=tl_score.ID

7 system(),exec(),passthru()

8,json_decode ,json_encode

9 isset() empty()

10 后者的权限大于前者,后者是OFF的话,前者就算是E-ALL也没用。

11,$_SERVER['REMOTE_ADDR'];

12,incov()

echo iconv("gbk",""UTF-8,"我们");

mb_convert_encoding($str, "GBK", "UTF-8")

13 explode() split() ;implode() join()

14 注意事项挺多的,懒得写。

1,超时,服务器已经关闭连接

2 静态表字段长度固定,自动填充,读写速度很快,便于缓存和修复,但比较占硬盘,动态表是字段长度不固定,节省硬盘,但更复杂,容易产生碎片,速度慢,出问题后不容易重建。

3InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

MyIASM是IASM表的新版本,有如下扩展:

二进制层次的可移植性。

NULL列索引。

对变长行比ISAM表有更少的碎片。

支持大文件。

更好的索引压缩。

更好的键吗统计分布。

更好和更快的auto_increment处理。

1.MySQL最大的优势在于MyISAM引擎下的简单SELECT,INSERT和UPDATE快速操作

2.MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。

以下是一些细节和具体实现的差别:

1.InnoDB不支持FULLTEXT类型的索引。

2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。

3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

以暂对存储引擎的认识,觉得 InnoDB 支持外键,在数据量可以用“庞大”来形容时,在有良好的 INDEX 的基础上,InnoDB 的查询速度应该比 MyISAM 要快。

在 Falcon 有稳定版本前,我想 MyISAM 是一个可用的选择方案。

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势

3, 都是1 ^^懒得回答了,睡觉去。

面试高级php工程师,一般会问到哪些问题

高并发大访问量的mysql优化,服务器优化?

字段建索引、主从数据库、读写分离、表分区、负载均衡。

linux的慢查询日志会记录mysql的超时查询sql语句,定期察看进行优化。

2.大访问量下秒杀模块程序怎么设计,如果使用mysql会有多卖的情况,就是订单超过库存。

将订单数据缓存到内存,如果用数据库直接崩掉,毫无悬念的。

3.缓存的使用

能用静态的用静态,不能静态的用内存缓存,例如memcache、redis,不能缓存的用数据库。

4.session可不可以跨域?怎么跨域?

将PHP session机制重写(PHP提供),将session存储在memcache或者数据库就可以跨域了。

另外session能以三种方式存储,文件、数据库、缓存。

5.了不了解非关系型数据库?

mongodb

6.会不会写shell脚本以及linux的操作

还会问一下时下流行的东西,比如做没做过微信开发,例如微信支付开发、APP移动开发,等等问题。

问的核心东西都是围绕这些转的,如果有笔试会让你写sql,php功能(例如冒泡排序等排序),还有逻辑题。

我当初面试了很多,这是一个我的面试经验的总结,纯手打忘采纳。


网页名称:php数据类型面试问题 php数据类型面试问题有哪些
文章转载:http://pwwzsj.com/article/ddshcho.html