• php面试题目


                                 PHP测试小例

    1、 禁用COOKIE SEESION 还能用吗?

    Cookie 是保存在浏览器

    1cookie是保存在本地的,而seesion是保存在服务器上的。所以两者没有直接的关系,禁用cookieseesion依然可以用。

    session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据。HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscapecookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众多用户的会话数据呢?
    首先要将客户端和服务器端建立一一联系,每个客户端都得有一个唯一标识,这样服务器才能识别出来。建议唯一标识的方法有两种:cookie或者通过GET方式指定。默认配置的PHP使用session的时会建立一个名叫”PHPSESSID”cookie(可以通过php.ini修改session.name值指定),如果客户端禁用cookie,你也可以指定通过GET方式把session id传到服务器(修改php.inisession.use_trans_sid等参数)。<a href=”p.php?<?php print session_name() ?>=<?php print session_id() ?>”>xxx</a>,也可以通过POST来传递session.

     

    2、用最少的代码写一个求3值最大值的函数(不用php自身函数).

    1. <?php
    2. //echo max(200,10,1,2,300);//php本身自带的函数
    3. function gmax(){
    4. $args=func_get_args();//获得数组里面
    5. $i=array_shift($args);//移除数组中的第一个数据
    6. foreach ($args as $v){
    7. $i=$i<$v ? $v : $i;
    8. }
    9. return $i;
    10. }
    11. echo gmax(444,454,1212).'<br>';//1212
    12. echo gmax(444,454,1212,77,454545).'<br>';//454545
    13. echo gmax(1,5,2,8,3,8,78).'<br>';//8


     

     

     

     

     

    3<input id="txt" type="text" value="baidu" />编写代码,当鼠标划过文本框,自动选中文本框中的内容。


     

    4、表中有A B C三列,SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

     

     

    select (case when a > b then a else case when B > C then B else C end end) from test

     

     

     

     

     

     

    5echo count(abc); 输出什么?

    count 为计算数组中的元素个数

    1

    count —计算数组中的单元数目或对象中的属性个数

    int count (mixed$var [, int$mode ] ), 如果 var 不是数组类型或者实现了Countable 接口的对象,将返回 1,有一个例外,如果 var NULL 则结果是 0

    对于对象,如果安装了 SPL,可以通过实现Countable 接口来调用 count()。该接口只有一个方法 count(),此方法返回 count() 函数的返回值。

     

     

    6、程序分析1

    /**** 这个程序****/

     $a=0;

     $b=0;

     if(($a=3)>0||($b=3)>0){

     $a++;

     $b++;

     echo $a ;

     echo $b;

     }结果是什么

    4,1

     

     

     

    7、程序分析2

    $s = 'abc';

    if ($s==0)

     echo 'is zero<br>';

     else

     echo 'is not zero<br>';结果是什么

    is zero

     

     

     

    8、用PHP写一段代码,实现不使用第3个变量,交换$a$b的值,$a$b的初始值自己定。

     

    1. <?php
    2. $a=0;
    3. $b=5;
    4. list($a,$b)=[$b,$a];
    5. echo $a.'<br>';
    6. echo $b.'<br>';

    方案一:适用于变量为数字的
    $a =1;
    $b =2;
    $a = $a+$b; //$a=3,$b=2;
    $b = $a-$b;    //$a=3,$b=1;
    $a = $a-$b; //$a=2,$b=1;
    方案二:使用所有的变量
    $a = 'abc';
    $b = 'def';
    list($a,$b) = array($b,$a);        //        list ()—
    把数组中的值赋给一些变量
    echo $a,$b;
    方案一:适用于变量为数字的
    $a =1;
    $b =2;
    $a = $a+$b; //$a=3,$b=2;
    $b = $a-$b;    //$a=3,$b=1;
    $a = $a-$b; //$a=2,$b=1;
    方案二:使用所有的变量
    $a = 'abc';
    $b = 'def';
    list($a,$b) = array($b,$a);        //        list ()—
    把数组中的值赋给一些变量
    echo $a,$b;

     

     

     

     

     

     

     

     

    9、一群猴子排成一圈,按12,…,n依次编号。然后从第1只开始数,数到第m,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入mn, 输出最后那个大王的编号

     

    1. <?php
    2. $m=3;//3为要移除的位置
    3. $n=10;//总共有15个数字
    4. for($i=1;$i<=$n;$i++){
    5. $num[$i]=$i;
    6. }
    7. $t=0;
    8. //先来个死循环因为不知道执行多少次
    9. while (true){
    10. foreach ($num as $k=>$v){
    11. ++$t;
    12. if($t==$m){
    13. unset($num[$k]);
    14. $t=0;
    15. }
    16. }
    17. if(count($num)==1){
    18. break;
    19. }
    20. }
    21. echo end($num);

    <?php


    function fn($n ,$m)
    {
        //
    构造数组
         //for($i=1 ;$i<$m+1 ;$i++){
         //  $arr[] = $i ;
        //} 
        $arr = array(1,2,3,4,5,6,7,8);
        $i = 0 ;    //
    设置数组指针
        print_r($arr);
        while(count($arr)>1)
        {
           //
    遍历数组,判断当前猴子是否为出局序号,如果是则出局,否则放到数组最后
           echo $i;
           if(($i+1) % $m ==0) {
            unset($arr[$i]);
           } else {

            //

    array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
            array_push($arr ,$arr[$i]); //
    本轮非出局猴子放数组尾部
            unset($arr[$i]);   //
    删除
           }
           $i++;
        }
        return $arr;
    }

    print_r(fn(15,12));
    ?>

     

     

     

     

     

     

     

     

     

     

     

    10、简单阐述网站优化的思路,可以从服务器,数据库,缓存着手

     

    一、web前端服务器

             1、提升浏览器访问性能

                a、减少http访问请求
                b
    、压缩css,js,图片
                c
    、使用浏览器缓存

             2CDN加速

                使用内容分发网络,让访问用户访问离他最近的CDN静态缓存服务器。提供系统访问性能。

             3web代理

     

         二、应用服务器
             1、分布式缓存服务器

                常用的有memcached.
             2
    、集群、负载均衡

                可以使用开源软件apache.
             3
    、异步处理

                通过执行线程可以进行异步,后续任务通过消息队列继续执行。
             4
    、代码优化


    三、数据库服务器
             1、索引
             2
    、视图
             3
    、控制投影查询

    以上是网站性能优化基本思路,在日常网站运营过程中,网站优化的第一关键是服务器缓存,缓存是解决性能问题的主要因素,但是很多网站设计都没有加入服务器缓存策略。

    设计模式

    工厂模式,单例模式,适配器模式,代理模式

    缩略图采用的代理模式

    设计模式是一套反复使用,大多数公司和开发人员都知晓的解决问题的经验总结

     





  • 相关阅读:
    setState 是异步吗?
    React优化点滴
    JS原型,作用域,this,闭包
    Webpack 模块化打包优化
    JS异步编程
    Web网络安全
    Http2.0和Http3.0
    Http协议基础
    Harris算子以及未来的规划...
    剑指offer 二维数组查找
  • 原文地址:https://www.cnblogs.com/lsr111/p/4629015.html
Copyright © 2020-2023  润新知