php面试数据库索引,php面试宝典

PHP中高级面试题 – 第一天

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

创新互联-专业网站定制、快速模板网站建设、高性价比安龙网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式安龙网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖安龙地区。费用合理售后完善,10多年实体公司更值得信赖。

二、什么是 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面试项目遇到的难点,

准备可能遇到的问题,

1.消息队列

答:消息队列:是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

应用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景;

2.全文索引

全文检索大体分两个过程,索引创建 (Indexing) 和搜索索引 (Search) 。

索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。

搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。

php 面试必考题 mysql的MyISAM 和 InnoDB 的区别

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

2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from

table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含

where条件时,两种表的操作是一样的。

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

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

innodb是行锁

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

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update

table set num=1 where name like “"2%”

6.InnoDB 支持事物

选择存储引擎 根据实际情况选择。

一般情况下如果查询多建议使用myIsam 。

如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式。

优化MYSQL数据库的方法:

1,选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM

2,使用join代替子查询

3,使用联合(UNION)来代替手动创建的临时表

4,事务处理(保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败)

5,适当建立索引(如何建立索引?索引的利与弊?)

6,优化sql语句

7,explain可以看到mysql执行计划

8,分表(垂直分表,水平分表?)

9,数据库主从

php mysql 索引如何操作

你需要在test1表中的id设置为主键然后在表中加入userid设置为非空 ,然后进行两个表的关联,

SQL语句为:eg:

"select * from test as A,test2 as B where A.userd=B.id and A.userid='临时会员'";

应该是这样地!你可以按这把你的给修改一下,如果你感觉对你有帮助请给好评!

面试高级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面试都会问什么?

简单的列出10点供你参考吧

1、php基础知识

2、常用函数使用

3、排序算法

4、引用变量的理解

5、session cookie 的理解

6、http请求 get post php://input 使用

7、mysql数据库链表查询,索引优化方案等

8、linux基本命名的使用 crontab,grep ,tail等

9、缓存 redis,memcached等的使用

10、市场上常用的流行PHP框架掌握,熟悉情况


网页名称:php面试数据库索引,php面试宝典
文章链接:http://ybzwz.com/article/phpegj.html