PHP常见面试题_php面试常问面试题

PHP常见面试题_php面试常问面试题一.基本知识点1.1HTTP协议中几个状态码的含义:503500401403404200301302。。。200:请求成功,请求的数据随之返回。301:永久性重定向。302:暂时行重定向。401:当前请求需要用户验证。403:服务器拒绝执行请求,即没有权限。404:请求失败,请求的数据在服务器上未发现。500:服务器错误

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一. 基本知识点
1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。
200 : 请求成功,请求的数据随之返回。
301 : 永久性重定向。
302 : 暂时行重定向。
401 : 当前请求需要用户验证。
403 : 服务器拒绝执行请求,即没有权限。
404 : 请求失败,请求的数据在服务器上未发现。
500 : 服务器错误。一般服务器端程序执行错误。
503 : 服务器临时维护或过载。这个状态时临时性的。

1.2 Include require include_once require_once 的区别.
处理失败方式不同:
require 失败时会产生一个致命级别错误,并停止程序运行。
include 失败时只产生一个警告级别错误,程序继续运行。

include_once/require_once和include/require 处理错误方式一样,
唯一区别在于当所包含的文件代码已经存在时候,不在包含。

1.3 (mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;
int : 数值类型
char : 固定长度字符串类型
varchar : 可变长度字符串类型
datetime : 时期时间类型
text : 文本类型

varchar和char有什么区别:
     a. char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。
而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。

b. char 固定长度,所以在处理速度上要比varchar快速很多,但是浪费存储空间,
所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例。

1.4 error_reporting 等调试函数使用
error_reporting() 函数能够在运行时设置php.ini中 error_reporting 指令。
所以可以再程序中随时调节显示的错误级别。
使用此函数时 display_errors必须是打开状态。

1.5 写代码来解决多进程/线程同时读写一个文件的问题。
PHP是不支持多线程的,可以使用php的flock加锁函数实现。
$fp = fopen(“/tmp/lock.txt”, “w+”);
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
fwrite($fp, “Write something here\n”);
flock($fp, LOCK_UN); // 释放锁定
} else {

echo “Couldn’t lock the file !”;
}
fclose($fp);

1.6 写一段上传文件的代码。
upload.html
<form enctype=”multipart/form-data” method=”POST” action=”upload.php”>
Send this file: <input name=”name” type=”file” />
<input type=”submit” value=”Send File” />
</form>

upload.php
$uploads_dir = ‘/uploads’;
foreach ($_FILES[“error”] as $key => $error) {

if ($error == UPLOAD_ERR_OK) {

$tmp_name = $_FILES[“tmp_name”][$key];
$name = $_FILES[“name”][$key];
move_uploaded_file($tmp_name, “$uploads_dir/$name”);
}
}

1.7 Mysql 的存储引擎,myisam和innodb的区别。
a. MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.
b. MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快.
c. InnoDB不支持FULLTEXT类型的索引.
d. InnoDB 中不保存表的具体行数,也就是说,
执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,
但是MyISAM只要简单的读出保存好的行数即可.
e. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
f. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
g. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,
但是对于使用的额外的InnoDB特性(例如外键)的表不适用.
h. MyISAM支持表锁,InnoDB支持行锁。


二. web 架构,安全,项目经验

2.1 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?


a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。


b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。


c. mysql库主从读写分离。


d. 找规律分表,减少单表中的数据量提高查询速度。


e。添加缓存机制,比如memcached,apc等。


f. 不经常改动的页面,生成静态页面。


g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.


2.2 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题
a. 确认服务器是否能支撑当前访问量。
b. 优化数据库访问。参考2.3
c. 禁止外部访问链接(盗链), 比如图片盗链。
d. 控制文件下载。
e. 使用不同主机分流。
f. 使用浏览统计软件,了解访问量,有针对性的进行优化。


2.3 写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把标记及其内容都去掉):(9)。

答:/<[^>].*?>.*?<\/>/si

2.4 用PHP打印出前一天的时间格式是2006-5-10 22:21:21

答:echo date(‘Y-m-d H:i:s’, strtotime(‘-1 day’));


2.5 echo(),print(),print_r()的区别

答:echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象


2.6 如何实现字符串翻转?

答:.用strrev函数呗,不准用PHP内置的就自己写:

strrev($str)
{
    $len=strlen($str);
    $newstr = '';
    for($i=$len;$i>=0;$i--)
    {
        $newstr .= $str{$i};
    }
    return $newstr;
}






2.7 实现中文字串截取无乱码的方法。

答:mb_substr()

2.8 如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?

答:$_SERVSR[‘REQUEST_URI’] , $_SERVER[‘REMOTE_ADDR’]


2.9 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数 

答:(strtotime(‘2007-3-6’)-strtotime(‘2007-2-5’))/3600*24


2.10 如何通过javascript判断一个窗口是否已经被屏蔽

答:获取open()的返回值,如果是null,就是屏蔽了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175593.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月27日 上午7:36
下一篇 2022年8月27日 上午7:46


相关推荐

  • Navicat 15 永久激活码【2022.01最新】

    (Navicat 15 永久激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html40ZKSWCX8G-eyJsaWNlbnNlSW…

    2022年4月2日
    2.1K
  • ubuntu杀死进程命令_ubuntu系统安装教程图解

    ubuntu杀死进程命令_ubuntu系统安装教程图解在用ubuntu的时候遇到几次程序卡死,但是不知道怎么关闭,心想有没有跟window一样的程序管理器存在?所以就去网上找了下解决方式记录一下:1、打开系统监视器:gnome-ststem-monitor然后就可以选择进程结束掉啦。2、如果知道程序名称可以命令杀死:killallXXX杀掉所有的进程killxxx(PID)杀死进程号xxx的进程,查看所有运行进程的命令:ps-aux…

    2026年2月8日
    5
  • 玩转xss

    玩转xss0x00前言很多人现在都没懂xss为什么这么鸡肋的漏洞能排到owasp前十名,xss做多也就拿来做个弹窗和打cookie,然后进入后台,感觉没啥意义,还不如弱口令来得实在。那么我们就先

    2021年12月11日
    108
  • 豆包大模型 1.6 正式发布,每百万 Token 低至 0.8 元

    豆包大模型 1.6 正式发布,每百万 Token 低至 0.8 元

    2026年3月12日
    2
  • vim退出快捷键「建议收藏」

    vim退出快捷键「建议收藏」退出vim的快捷键,不需要进入命令编辑模式按住shiftzz  保存退出zq  不保存退出,q表示放弃之所以按住shift,其实是切换大小写 在命令编辑模式下::q不保存退出:q!不保存强制退出:wq保存退出,w表示写入,不论是否修改,都会更改时间戳:x  保存退出,如果内容未改,不会更改时间戳

    2022年8月24日
    7
  • javaw.exe路径错误导致eclipse无法启动

    “javaw.exe”路径错误导致“eclipse”无法启动的解决方法是:首先打开“eclipse”安装文件下的配置文件,接着查找“-vm”参数,然后在此参数下方修改或添加“javaw.exe”所在路径并保存,最后重启编辑器即可。

    2022年1月16日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号