php面经

使用二分法查找数组中某元素的位置(应该是排好序的)

 $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)交给从数据库来处理,数据库复制,就是把事务性操作导致的变更  同步到集群中的从数据库(主从复制)。

       ②读写分离原因:写操作的速度相对读操作要慢,耗费时间长,解决数据库写操作影响读操作的问题

       详解

你可能感兴趣的:(面经)