2023年PHP架构师面试题目和答案_第1页
2023年PHP架构师面试题目和答案_第2页
2023年PHP架构师面试题目和答案_第3页
2023年PHP架构师面试题目和答案_第4页
2023年PHP架构师面试题目和答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、\o"MySQL知识库"MySQL相关知识1、请列举mysql优化方式选取最合用的字段属性、事务

、锁定表、使用外键

、使用索引、优化的查询语句

使用连接(JOIN)来代替子查询(Sub-Queries)

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

2、请列举分库分表的常用方法有一个1000多万条记录的用户表members,查询起来非常之慢<?php

for($i=0;$i<100;$i++){

//echo"CREATETABLEdb2.members{$i}LIKEdb1.members<br>";

echo"INSERTINTOmembers{$i}SELECT*FROMmembersWHEREmid%100={$i}<br>";

}

?>

3、Mysql+如何做双机热备和负载均衡1.主服务器授权 2.数据复制 3.配置主服务器 4.重启master 5.配置slave 6.重启slave 7.查看master的状态与设立的是否一致 8.查看slave4、数据表类型有哪些MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等

MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。

InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。5、防sql注入的方法?

mysql_escape_string(strip_tags($arr["$val"]));6、mysql把一个大表拆分多个表后,如何解决跨表查询效率问题[php]\o"viewplain"viewplain\o"copy"copy/**

*

函数名称:post_check()

*

函数作用:对提交的编辑内容进行解决

*

参数:$post:

要提交的内容

*

值:$post:

返回过滤后的内容

*/

function

post_check($post){

if(!get_magic_quotes_gpc()){//

判断magic_quotes_gpc是否为打开

$post

=

addslashes($post);//

进行magic_quotes_gpc没有打开的情况对提交数据的过滤

}

$post

=

str_replace("_","\_",

$post);//

'_'过滤掉

$post

=

str_replace("%","\%",

$post);//

'%'过滤掉

$post

=

nl2br($post);//

回车转换

$post

=

htmlspecialchars($post);//

html标记转换

return

$post;

}

7、索引应用7.1什么情况下考虑索引7.2什么情况不适合索引7.3一个语句是否用到索引如何判断8、mysql对于大表(千万级),要怎么优化第一优化你的sql和索引;第二加缓存,memcached,redis;第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;第四假如以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描所有分区,此外分区表尚有一些坑,在这里就不多说了;第五假如以上都做了,那就先做垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统;第六才是水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理的shardingkey,为了有好的查询效率,表结构也要改动,做一定的冗余,应用也要改,sql中尽量带shardingkey,将数据定位到限定的表上去查,而不是扫描所有的表;mysql数据库一般都是按照这个环节去演化的,成本也是由低到高;9、如何理解mysql的慢查询其实通过慢查询日记来分析是一种比较简朴的方式,假如不想看日记,可以借助工具来完毕,如mysqldumpslow,mysqlsla,myprofi,mysql-explain-slow-log,mysqllogfilter等,感觉自己来分析一个需要丰富的经验,一个浪费时间。10、关于用户登录状态存session,cookie还是\o"MySQL知识库"数据库或者memcache的优劣11、事务应用极端情况解决12、sql语言分4大类请列举

DDL--CREATE,DROP,ALTER

DML--INSERT,UPDATE,DELETE

DQL-SELECT

DCL--GRANT,REVOKE,COMMIT,ROLLBACK二、php基础session的跨域共享是什么,如何实现php连接mysql数据库的几种方式及区别mysql:面向过程

mysqli:面向对象

pdo:可移植性高

三、php高级长连接和短连接的使用,区别是什么socket的使用,简述过程支付安全问题,如何保证面向对象的概念三大特性:封装、继承、多态(方法重写)。抽象类:abstract,至少有一个方法是抽象方法,不能被实例化,为子类定义公共接口。

接口:interface,解决php的单继承问题,所有方法都是public访问权限的抽象方法,不能声明变量只能声明常量。

继承一个类的同时实现多个接口

classA

extendsBimplements接口1,接口2...,接口n(){

//实现所有接口中的方法

}lamp和lnmp网站架构性能差异的因素分析解释性语言和编译性语言的性能分析,请举例四、正则表达式:请用js实现正则表达式验证邮箱

functioncheck(email_address)

{

varregex=/^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g;

if(regex.test(email_address))

{

varuser_name=email_address.replace(regex,"$1");

vardomain_name=email_address.replace(regex,"$2");

varalert_string="您输入的电子邮件地址合法\n\n";

alert_string+="用户名:"+user_name+"\n";

alert_string+="域名:"+domain_name;

window.alert(alert_string);

returntrue;

}

else

{

window.alert("您输入的电子邮件地址不合法");

returnfalse;

}

}五、开发基础:简述进程和线程定义,区别和联系进程的状态:运营run、就绪ready、等待wait六、Nosql数据库:简述memcached、redis、mongodb的区别联系3个场景完全不同的东西。1.memcached:单一键值对内存缓存的,做对象缓存无可替代的分布式缓存;2.redis:是算法和数据结构的集合,快速的数据结构操作是他最大的特点,支持数据持久化;3.mongodb是bson结构、介于rdb和nosql之间的,更松散更灵活的,但是不支持事务,只用作非重要数据存储。七、常用linux命令:如何建立软链接八、架构相关项目上线前如何进行压力测试,单台服务器支持的并发数,pv数?服务器资源怎么分派合理CPU:Apache

MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然会CPU占用过高。内存:内存库,数据库软件硬盘:文献web2.0架构选择有?\o"MongoDB知识库"MongoDB+\o"Redis知识库"Redis或者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论