前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员面试必备PHP基础面试题 – 第十七天

程序员面试必备PHP基础面试题 – 第十七天

作者头像
PHP学习网
发布2022-08-03 14:24:07
1.2K0
发布2022-08-03 14:24:07
举报
文章被收录于专栏:PHP学习网PHP学习网

一、写一段文件上传代码,要求只能上传图片格式,大小限制5M

代码语言:javascript
复制
<form action=”action.php” method=”post” enctype=”multipart/form-data”>
    <input type=”file” name=”pic” />
    <input type=”submit” value=”提交” />
</form>

Action.php:
    $name=$_FILES[‘pic’][‘name’];
    $type=$_FILES[‘pic’][‘type’];
    $tmp=$_FILES[‘pic’][‘tmp_name’];
    $error=$_FILES[‘pic’][‘error’];
    $size=$_FILES[‘pic’][‘size’];
    $maxsize=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、 数据库设计方面,设计结构良好的数据库,允许部分数据冗余。选取最适用的字段属性,尽可能把字段设置为NOT NULL,这样在查询的时候,数据库不用去比较NULL值。

2、系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。

3、写高效sql语句,以提高效率。使用连接(join)来代替子查询 使用联合(union)来代替手动创建的临时表

4、所得皆必须,只从数据库取必须的数据。

5、必要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。

6、使用事务

7、使用外键

8、使用索引

三、怎么防止sql注入?

1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等 或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。

2、在PHP配置文件中 Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。比如:接收POST表单的值使用_POST['user'],如果将register_globals=on;直接使用user可以接收表单的值。

3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号

4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的

5、对于常用的方法加以封装,避免直接暴漏SQL语句

6、开启PHP安全模式 Safe_mode=on;

7、打开magic_quotes_gpc来防止SQL注入 Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为',这对防止sql注入有重大作用。因此开启:magic_quotes_gpc=on;

8、控制错误信息 关闭错误提示信息,将错误信息写到系统日志。

9、使用mysqli或pdo预处理。

四、数据库索引有几类,分别是什么?什么时候该用索引

普通索引、主键索引、唯一索引

并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。

五、数组中下标最好是什么类型的,为什么?

数组的下标最好是数字类型的,数字类型的处理速度快。

六、++i和i++哪一个效率高,为什么?

++i效率比i++的效率更高,因为++i少了一个返回i的过程。

七、magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?

Magic_quotes_gpc()是php配置文件中的,如果设置为on则会自动POST,GET,COOKIE中的字符串进行转义,在'之前加\

Magic_quotes_runtime()是php中的函数,如果参数为true则会数据库中取出来的单引号、双引号、反斜线自动加上反斜杠进行转义。

八、你对Memcach的理解,优点有哪些?

Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。Memcache的优点:稳定、配置简单、多机分布式存储、速度快

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PHP学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、网站出现mysql 压力太大,mysql 占用的cpu 太高,应该从哪些方面入手查找问题根源?
  • 三、怎么防止sql注入?
  • 四、数据库索引有几类,分别是什么?什么时候该用索引
  • 五、数组中下标最好是什么类型的,为什么?
  • 六、++i和i++哪一个效率高,为什么?
  • 七、magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?
  • 八、你对Memcach的理解,优点有哪些?
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档