PHP面试题及答案

面试筛选问题

  1. 给你四个坐标点,如何判断它们能不能组成一个矩形?如判断([0,0],[0,1],[1,1],[1,0])能组成一个矩形

答:

//获取两个点之间的长度的平方

    //不计算边长是为了后面方便进行比较

    function getLength($point1, $point2){

        $res = pow($point1[0]-$point2[0], 2) + pow($point1[1]-$point2[1], 2);

        return $res;

    }

    function isRectangle($point1, $point2, $point3, $point4){

        //任意两点相同 不可能组成矩形

        if($point1 == $point2 || $point1 == $point3 || $point1 == $point4 || $point2 == $point3 || $point2 == $point4 || $point3 == $point4){

            return false;

        }

        //将所有边长平方放在一个数组内

        $arr = [];

        $arr[] = getLength($point1, $point2);

        $arr[] = getLength($point1, $point3);

        $arr[] = getLength($point1, $point4);

        $arr[] = getLength($point2, $point3);

        $arr[] = getLength($point2, $point4);

        $arr[] = getLength($point3, $point4);

        //去重

        $arr = array_unique($arr);

        $arr_count = count($arr);

        //正方形也是矩形

        if($arr_count == 3 || $arr_count == 2){

            $max_length = max($arr);

            $min_length = min($arr);

            $other_length = array_diff($arr, [$max_length, $min_length]);

            //勾股定理

            if($min_length + $other_length = $max_length){

                return true;

            } else {

                return false;

            }

        } else {

            return false;

        }

}

调用

var_dump(isRectangle([0,0],[0,1],[1,1],[1,0]));

2、 下面代码结果是?

$a=array(‘1′,’2′,’3’);

$b=&$a;

$a=array(‘a’,’b’,’c’);

print_r($a);

print_r($b);

答:

Array

(

    [0] => a

    [1] => b

    [2] => c

)

Array

(

    [0] => a

    [1] => b

    [2] => c

)

3、mySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?

答:(1).保留热点数据

(2).保证redis只存入20w的数据。

首先热点数据就是频繁访问的数据,我们可以通过redis的淘汰策略来完成,这里推荐Allkeys-lru淘汰策略,该淘汰策略从数据集中挑选最近最少使用的数据删除。

再者需要解决的问题是只存入20w的数据,目前来看只能通过redis的内存限制来实现,计算20w数据使用内存大小进行预设置内存大小实现。或许内存大小不好计算,但是我们可以只记录热点数据的主键id,redis只保存热点数据主键id,而主键id一般都是定长的,大小利于计算。

4、禁用cookie后怎么使用session。请结合你做过的项目对上面的每一点进行举例剖析

答:Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session。

如:

<?php session_start();

$_SESSION[‘url’] = ‘http://www.ailiaw.top’;

echo ‘个页面取到的session值:’.$_SESSION[‘url’];

?>

<a href=”session_a.php?<?php print session_name() ?>=<?php print session_id() ?>”>另一个页面</a>

作者: 执着小钟

执着小钟

发表评论