《PHP学习网》公众号每天都会分享一些面试题,找工作的朋友可以看看。1、写一段文件上传代码,只要求上传图片格式,大小限制5MAction.php:$name=$_FILES['pic']['name'];$type=$_FILES['pic']['type'];$tmp=$_FILES['pic']['tmp_name'];$error=$_FILES['pic']['error'];$size=$_FILES['pic']['size'];$最大尺寸=1024*1024*5;if($size>$maxsize){Exit('图片尺寸超出');}$name_arr=array('gif','png','jpg','jpeg');$ext=pathinfo($name,PATHINFO_EXTENSION);If(!in_array($ext,$name_arr)){exit('图片类型不正确');}二、网站对mysql压力太大,mysql占用cpu太高,应该从哪里入手查找问题根源呢?1、在数据库设计方面,设计一个结构良好的数据库,允许部分数据冗余。选择最适用的字段属性,尽可能将字段设置为NOTNULL,这样数据库在查询时就不需要比较NULL值了。2、在系统架构设计上,表哈希,将海量数据哈希成几个不同的表,集群,数据库查询和写入分离。3、编写高效的sql语句,提高效率。使用join代替子查询,使用union代替手动创建的临时表4.所有的结果都是需要的,只从数据库中取出必要的数据。5.必要时使用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。6.使用事务7.使用外键8.使用索引3.如何防止SQL注入?1、过滤掉一些常用的数据库操作关键字:select、insert、update、delete、and、*等或者使用系统函数:addslashes(需要过滤的内容)进行过滤。2、在PHP配置文件中,Register_globals=off;setittooffstate//函数将全局变量注册为off。例如:使用$_POST['user']接收POST形式的值,ifregister_globals=on;直接使用$user来接收表单的值。3、写SQL语句时尽量不要省略小引号(tab键上面那个)和单引号。4.提高数据库命名技巧。对于一些重要的字段,根据程序的特点来命名。5.对常用的方法进行封装,避免直接泄露SQL语句。6、开启PHP安全模式Safe_mode=on;7.开启magic_quotes_gpc防止SQL注入。Magic_quotes_gpc=关闭;默认关闭,会自动查询用户提交的sql语句进行转换,转'to',对防止sql注入有很大作用。所以开启:magic_quotes_gpc=on;8、控制错误信息关闭错误提示信息,将错误信息写入系统日志。9.使用mysqli或pdo预处理。4.数据库索引有几种类型,它们是什么?何时使用索引普通索引、主键索引、唯一索引并非所有数据库都以相同的方式使用索引,作为一般规则,只有当列中的数据被频繁查询时才需要在表上创建索引。5.数组中最好的下标类型是什么,为什么?数组的下标最好是数值型的,数值型的处理速度快。6.++i或i++哪个更有效率,为什么?++i比i++更高效,因为++i少了一个返回i的过程。7.magic_quotes_gpc()和magic_quotes_runtime()是什么意思?Magic_quotes_gpc()在php配置文件中。如果设置为on,它会自动对POST、GET、COOKIE中的字符串进行转义。在'.之前添加\Magic_quotes_runtime()。它是php中的一个函数。如果该参数为真,则将从数据库中提取的单引号、双引号和反斜杠自动用反斜杠进行转义。8、您对Memcach的理解和优势是什么?Memcache是??一种缓存技术,将动态网页在一定时间内解析后保存到文件中。下次访问动态网页时,会直接调用这个文件,不用重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,降低高并发时对服务器的压力。Memcache的优点:稳定,配置简单,多机分布式存储,速度快最后大家可以扫描下方二维码关注我公众号,我目前正在更新基础面试题,会更新中高级面试题,redis,liunx面试题稍后