当前位置:网站首页>PHP中高级面试题 – 第一天
PHP中高级面试题 – 第一天
2022-08-03 14:42:00 【PHP学习网】
一、写一个函数,获取一篇文章内容中的全部图片,并下载
function download_images($article_url = '', $image_path = 'tmp'){
// 获取文章类容
$content = file_get_contents($article_url);
// 利用正则表达式得到图片链接
$reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif|png)).*?>/';
$ret = preg_match_all($reg_tag, $content, $match_result);
$pic_url_array = array_unique($match_result1[1]);
// 创建路径
$dir = getcwd() . DIRECTORY_SEPARATOR .$image_path;
mkdir(iconv("UTF-8", "GBK", $dir), 0777, true);
foreach($pic_url_array as $pic_url){
// 获取文件信息
$ch = curl_init($pic_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$fileInfo = curl_exec($ch);
$httpinfo = curl_getinfo($ch);
curl_close($ch);
// 获取图片文件后缀
$ext = strrchr($pic_url, '.');
$filename = $dir . '/' . uniqid() . $ext;
// 保存图片信息到文件
$local_file = fopen($filename, 'w');
if(false !== $local_file){
if( false !== fwrite($local_file, $filecontent) ){
fclose($local_file);
}
}
}
}
二、什么是 CSRF 攻击?XSS 攻击?如何防范?
CSRF:跨站请求伪造,可以通过通过判断来源和加 Token 的方式来防范。
XSS:跨站脚本攻击,可以通过对内容转义和过滤来防范,还有 CSP
三、应用中我们经常会遇到在 user 表随机调取 10 条数据来展示的情况,简述你如何实现该功能。
SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;
四、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 有问题。
边栏推荐
- 树莓派 USB摄像头 实现网络监控( MJPG-Streamer)
- varchar2 and varchar2(char)_datetime data types
- GMapping原理分析[通俗易懂]
- How to connect a VMware virtual machine to the network "recommended collection"
- 【报错】ImportError: libpng16-57e5e0a0.so.16.37.0: cannot open shared object file: No such file or direc
- Linux安装Mysql的几种方法
- Several methods of installing Mysql in Linux
- 基于ModelArts的动漫头像自动生成丨【华为云至简致远】
- HDU 1027 Ignatius and the Princess II(求由1-n组成按字典序排序的第m个序列)
- leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
猜你喜欢
使用华为HECS云服务器打造Telegraf+Influxdb+Grafana 监控系统【华为云至简致远】
兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
JS每晚24:00更新某方法
With 1000 lines of code statistics after the xi 'an housing prices, I have a startling discovery...
Detailed explanation of cloud hard disk EVS and how to use and avoid pits [HUAWEI CLOUD is simple and far]
大型连锁百货运维审计用什么软件好?有哪些功能?
基于.NET 6 的开源访客管理系统
MSF编码与upx加壳过杀软
6000 字+,帮你搞懂互联网架构演变历程!
Day2:面试必考题目
随机推荐
阿里大牛最新总结分享的高并发编程核心笔记(终极版),高并发系统架构场景一应俱全
内心的需求
GMapping原理分析[通俗易懂]
十大免费代理ip软件_国内静态ip代理软件
The difference between servlet and jsp _ the difference between servlet and class
基于.NET 6 的开源访客管理系统
MATLAB中writetimetable函数用法
高性能创作本,日常修图剪辑选华硕无畏Pro15 2022完全足矣!
你把 vite打包 玩明白
【报错】ImportError: libpng16-57e5e0a0.so.16.37.0: cannot open shared object file: No such file or direc
LeetCode15:三数之和
leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
兆骑科创高层次人才引进平台,创新创业赛事活动路演
162_Power Query is a custom function for quickly merging tables in a folder TableXlsxCsv_2.0
连亏四个月,赚不回电费,预制菜经销商恐成“韭菜”?
Use Typora+EasyBlogImageForTypora to write a blog and upload pictures quickly without a picture bed
Tao Te: Engine or baggage?
PAT乙级-B1015 德才论(25)
MSF编码与upx加壳过杀软
技术分享 | 接口自动化测试如何搞定 json 响应断言?