使用二分法查找数组中某元素的位置(应该是排好序的)
$val){
$high = $mid - 1;
}else{
$low = $mid + 1;
}
}
return -1;
}
?>
php递归求一个数的阶乘
1)
{
$r=$a*demo($a-1);
}else
{
$r=$a;
}
return $r;
}
$a=6;
echo $a."的阶乘的值".demo($a);
?>
用两个栈(先进后出)实现一个队列(先进先出):完成队列的Push和Pop操作(添加删除最后一个元素)
两个栈。出栈的时候,如果栈2不为空,就出栈2。如果栈2为空,就把栈1的出栈再入栈2。
1、求一个数组中第二大的元素。
$max) {
$second = $max;
$max = $arr[$i];
}elseif ($arr[$i] < $max && $arr[$i] > $second) {
$second = $arr[$i];
}
}
return $second;
}
$arr = [3,5,3,7,4,1,33,65,23,2,45];
print_r(getSecond($arr));
2、数组中一个数组出现次数超过数组长度一半,如果说字符串中某字符,可运用函数转换为数组str_split(string,int),按照几个字符分割,默认一个字符。
3、列出一个字符串的所有排列组合形式。
4、比较两个字符串,其中一个的排列组合中的某种是否在另一个字符串中存在。
思路:分为两个数组,循环一个数组中的元素,如果另一个数组中有相同的就划掉,如果出现不同,则恢复另一个数组,重新进行比较。
5、索引失效的情况?联合查询时只有没有第一个条件,有其他条件
联合查询的使用union
6、数据库:查找数组中某一个时间段内最大或最小的某个字段 between and
7、删除数组中某个指定的元素,(可以通过key-value交换函数)
$value)
{
if ($value === 3)
unset($arr2[$key]);
}
var_dump($arr2);
?>
//结果 索引未改变 0 2 3 ……
8、堆排序实现代码
9、冒泡排序实现代码
10、快排实现代码
11、laravel框架的理解
12、thinkphp框架联合的使用 concat
13、字符串查找函数(包括中文查找函数)
strpos
14、404、500、204、301
15、控制器的类型
16、Linux配置多域名
17、产生0-1000的随机整数,如果某个数字大于500,输出这个数字。
18、99个数字从1到100中不重复取,求缺失的数字。
答:分别求和,然后求差
19、tcp udp
tcp面向连接,udp是无连接的 详解
20、序列化与反序列化
序列化:将对象的状态信息转换为可以存储或传输的字节序列形式的过程。
反序列化:把字节序列恢复为对象的过程。
21、分区分表
22、消息推送的实现(非记忆)
建立长连接 APP web
23、hash
24、一个不平衡的二叉树,只显示最右边的数据
25、mqtt的工作原理
解:消息队列遥测传输协议,是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议基于TCP/IP协议构建。mqtt理解
26、对于支付过程中会发生的突发情况,怎么解决?
解:若回调过程中,处理业务失败(如更新订单状态失败),返回
P.S.个人认为准确的情况,应该是在回调过程中发生异常处理失败返回FAIL的时候,微信(或我的程序)调用退款接口,将用户支付金额返回到账户,但这样也有两点问题:
1、调用退款接口之后,针对原支付成功的回调,该如何返回?返回FAIL无法终止回调,返回SUCCESS,又感觉不符合场景。
2、调用退款接口,微信端同样会针对这个退款进行回调,如果这个退款的回调再发生异常失败,又如何处理?
27、数据库读写分离的理解
①读写分离就是将事务性的写操作(update/insert/delete)交给主数据库来处理,读操作(select)交给从数据库来处理,数据库复制,就是把事务性操作导致的变更 同步到集群中的从数据库(主从复制)。
②读写分离原因:写操作的速度相对读操作要慢,耗费时间长,解决数据库写操作影响读操作的问题
详解