1. 写出10个array函数,10个string函数
array_push 往数组中添加元素
array_pop 往数组中弹出一个元素
array_merge 数组合并
array_pad 数组填充,array_pad($result, -7, 0); 以0在开数组开头进行填充
array_shift 从开头删除一个元素
array_unshift 从开头插入
array_slice 获取一定长度的数据
array_splice 截取数组
count 获取数据的长度
sort 对数据进行排序
rsort 数组进行倒叙排序
ksort 根据key值,进行排序
usort 用户自定义排序
array_serach 查询首次出现的位置
字符串函数
strstr 获取子字符串
md5 md5加密
strtolower 转为小写
strtoupper 转为大写
ucwords 单词首字母大写
ucfirst 单词首个单词第一个字母大写
lcfirst 首个单词第一个字母小写
lcwords 单词的首个字母小写
implode 将数组转化为字符串
explode 将字符串转化为数组
strlen 获取字符串的长度
str_replace 替换字符串
strpos 查询首次出现的位置
stripos 查询首次出现的位置,不区分大小写
strrpos 查询最后一次出现的位置。
复制代码
2. 写一个字符串反转函数 “hello world”
function reverse($str) {
if(empty($str)) {
return false;
}
$len = count($str);
for($i = 0; $i < $len; $i++) {
$temp = $str[$len-$i-1];
$str[$len-$i-1] = $str[$i];
$str[$i] = $temp;
}
return $str;
}
复制代码
但是这种情况下, 就有一个问题,就是如果输入的是中文就有问题,因为中文时两个字节,而英文是一个字节。 (待优化)
function reverse($str) {
$re = '';
$len = mb_strlen($str);
for ($i=0; $i < $len; $i++) {
$re = mb_substr($str, $i, 1) . $re;
}
return $re;
}
$res = reverse('eng中国lis');
echo $res;
?>
复制代码
3. 写一个单例模式
final class singleton()
{
private static $instance;
private function ___construct() {}
private function __clone() {}
public function getInstance() {
if (!self::instance) {
self::instance = new self();
}
return self::instance;
}
}
复制代码
4. 一个浏览器发起请求的过程
5. php-fpm
因为php-cgi 每次都去php.ini 重新编译,效率很慢。fastcgi 就是为了解决每次都编译的问题。 php-fpm 是一个进程管理工具,支持ini更新后 平滑的重启。 www.awaimai.com/371.html
5. 超卖问题
正则表达式
7. 你熟悉的linux命令
ls
mkdir
cd
chmod
su
chgrp
chown
touch
scp
ftp
top
ps
ln
systemctl
grep
awk
cat
tail
head
where
whereis
find
df
复制代码
8. 正则表达式
10. http的状态码
200 成功
301 永久重定向
302 临时重定向
401 需要验证
403 验证未通过
404 资源不存在
500 服务器端错误
503 服务器维护
复制代码
11. PHP的内存回收机制
有个计数,当为0时,回收。
12. MySQL优化
加索引
explain 查看语句是否有问题,是否可以优化,加索引?修改语法顺序?
13. redis 的五种数据结构
string
list
hash
set
zset
14. redis的持久化
rdb 快照持久化【可以定时写,可以达到条件了之后再写,是master fork一个子进程去执行,不影响性能。但是如果异常之后,会丢掉这一批数据】
aof 根据增量写入到磁盘,性能会差一些,因为是直接写磁盘,但是异常重启之后,只会损失一小部分数据。
15.rabbitmq的问题
生产者丢数据怎么办?
没办法啊,只能让生产者,横向扩容,保证消息的正常发送。
消费者消费失败怎么办? 重复消费怎么办? 消费失败,就继续重试啊,不发送ack。
消费端,需要做好幂等。
16.二分查找
function bin_search($nums, $target) {
if (empty($nums)) {
return null;
}
$left = 0;
$right = count($nums) - 1;
while ($left <= $right) {
$mid =floor(($right + $left) / 2);
if ($nums[$mid] == $target) {
return $mid;
}elseif ( $target < $nums[$mid]) {
$right = $mid - 1;
} else {
$left = $mid + 1;
}
}
}
$nums = array(1,2,4,5,6,8,9, 17);
$target = 9;
$result = bin_search($nums, $target);
var_dump($result);
复制代码
17.快速排序
function quickSort($nums) {
if(empty($nums)) {
return null;
}
$len = count($nums);
$left= array();
$right = array();
$key = $nums[0];
for($i = 1; $i < $len; $i++) {
if ($nums[$i] < $key) {
$left[] = $nums[$i];
} else {
$right[] = $nums[$i];
}
}
$left = quickSort($nums);
$right = quickSort($nums);
return array_merge($left, [$key], $right);
}
复制代码