PHP面试题(三)

一、什么是restful api

RESTful API 是一种基于HTTP协议的设计风格,通过使用标准的HTTP方法和资源表示,使得API设计简单、清晰且易于理解,一眼就能看出该API的作用。

使用标准的HTTP方法来操作资源:
GET:检索资源
POST:创建资源
PUT:更新资源
DELETE:删除资源

二、将一个二维数组的值首字母大写

// 示例二维数组
$array = [
    ['name' => 'john doe', 'city' => 'new york'],
    ['name' => 'jane smith', 'city' => 'los angeles']
];

// 函数:将字符串的首字母大写
function capitalizeFirstLetter($string) {
    return ucfirst($string);
}

// 函数:处理二维数组中的每个值
function capitalizeArrayValues($array) {
    return array_map(function($subArray) {
        return array_map('capitalizeFirstLetter', $subArray);
    }, $array);
}

// 处理后的数组
$result = capitalizeArrayValues($array);

// 输出处理后的数组
print_r($result);

三、优化语句查询

test表中数据有500w,字段有id/t_id/type_id/plat_id,语句为select max(t_id) from test where type_id=1 and plat_id=1

考察mysql语句优化,这里主要是优化max函数,max函数会导致全表扫描,效率会很低,可以使用order by加limit进行优化

select t_id from test where type_id=1 and plat_id=1 order by t_id desc limit 1;

当然还可以使用加索引进一步优化速度,这里可以加上(type_id/plat_id)联合索引。

正确做法是给t_id加索引,还有(type_id/plat_id)联合索引。

四、找出N个数中的第M大的数

将数组进行降序排序,找出索引为M-1的值

function findMthLargest($array, $m) {
    // 对数组进行降序排序
    rsort($array);
    
    // 返回第M大的数
    return $array[$m - 1];
}

// 示例数组
$array = [3, 5, 2, 9, 7, 8, 1];

// 查找第3大的数
$m = 3;
$result = findMthLargest($array, $m);

echo "The {$m}rd largest number is: {$result}";

五、跨域请求时,如何解决

跨域请求(Cross-Origin Requests)指的是从一个源(协议、域名、端口三者组合)向另一个源发送的请求。由于安全原因,浏览器对跨域请求有严格的限制,称为同源策略(Same-Origin Policy)。

解决方法

  1. 在php脚本添加请求头
<?php
// 设置允许访问的域名
header("Access-Control-Allow-Origin: *");

// 设置允许的请求方法
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");

// 设置允许的请求头
header("Access-Control-Allow-Headers: Content-Type, Authorization");
  1. 在nginx配置中添加请求头
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值