php面试题-2

1.检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)

    检测⼀个变量是否有设置的函数是isset()

检测⼀个变量是是否为空的函数是empty()

2. echo(),print(),print_r()的区别(3分)

    echo()是php语句 没有返回值 输出一个或多个字符串

    print()是函数 有返回值  打印简单类型的变量(int,string

    print_r()是函数 有返回值 打印复杂的类型的变量的值(数组,对象

3. 表单中 get与post提交方法的区别?

    ① 传输的数据量不同

 get小,被url长度限制,效率高,安全性差,post可以传输大量数据,

    ② 传输方式不同

        Get是发送请求http协议通过URL参数传递

        Post是实体数据

    ③ 服务器端获取数据方式不同

        $_GET和$_POST

    ④ 用途不同

        Get主要用于页面搜索,post用于数据的增删改

4. session与cookie的区别?

    ① Cookie存放在客户端 Session存储在服务器端

② 安全性cookie差

③ cookie有大小限制

④ session过大服务器压力会增大

5. 用PHP打印出前一天的时间格式是2015-8-10 22:21:21

    date_default_timezone_set('PRC');

echo  date('Y-m-d H:i:s', time()-24*3600);

echo '<br>';

echo date('Y-m-d H:i:s', strtotime('-1 day'));

6. 能够使HTML和PHP分离开使用的模板引擎

    Smarty TagTemplate EasyTemplatePHP dttag Mustache

7. 使用哪些工具进行版本控制

    Svn git  cvs

8. 如何实现字符串翻转

    Strrev()函数

$str = "abcdefg";

function strrevv($str)
{
$len=strlen($str);
$newstr = '';
for($i=$len;$i>=0;$i--)
{
$newstr .= $str{$i};
}
return $newstr;
}
$showstr = strrevv($str);
echo $showstr."<br>";

9. 有一个网页地址, 比如PHP开发资源网主页: baidu.com, 如何得到它的内容?

        Fopen()

$readcontents = fopen("baidu.com ", "rb");

   $contents = stream_get_contents($readcontents);

   fclose($readcontents);

   echo $contents;

        File_get_contents()

10. 在PHP中error_reporting这个函数有什么作用?

    设置报错级别

11. JS表单弹出对话框函数是?获得输入焦点函数是?

    弹出对话框: alert(),prompt(),confirm() 获得输入焦点 focus()

12. foo()和 @ foo()之间有什么区别

        @foo() 控制错误输出

13. GD库是做什么用的?

    php处理图形的扩展库   验证码

14. 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

    function my_scandir($dir)  
{  
  $files = array();  
  if ( $handle = opendir($dir) ) { 
    while ( ($file = readdir($handle)) !== false ) {  
      if ( $file != ".." && $file != "." ) {  
        if ( is_dir($dir . "/" . $file) ) {  
        $files[$file] = scandir($dir . "/" . $file);  
        }else {  
        $files[] = $file;  
        }  
      }  
    }  
    closedir($handle);  
    return $files;  
  }  
}

$files=my_scandir('D:\www\moning');
print_r($files);

15. 写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)
  表名User Name Tel Content Date
  张三 13333663366 大专毕业 2006-10-11
  张三 13612312331 本科毕业 2006-10-15
  张四 021-55665566 中专毕业 2006-10-15
  (a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
  (b) 请用sql语句把张三的时间更新成为当前系统时间
  (c) 请写出删除名为张四的全部记录

        Mysql_query(“insert into `User`(name,tel,content,date) value(‘小王’, 13254748547,’ 高中毕业’,’ 2007-05-06’ )”)

        Mysql_query(“update `user` set date =’”.time().”’ Where name = ‘张三’”)

        Mysql_query(“delete from `user` where name=’张四’”)

16. myisam与innodb的区别

    ① Myisam不支持事务 innodb支持

    ② innodb为行级锁 myisam表级锁

    ③ innodb不保存表行数

    ④ myisam适用执行select innodb适用insert update

    ⑤ 物理结构不同 myisam存三个文件,。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex)引伸  InnoDB 把数据和索引存放在表空间里面

    ⑥ MyISAM中可以使AUTO_INCREMENT类型字段建立联合索引 InnoDB中必须包含AUTO_INCREMENT类型字段的索引

17. int 与bigint的区别

    int普通大小的整数 默认10位 bigint大整数 默认20位

18. int(10)与int(11)的区别

    显示长度不同

19. varchar与char的区别

        Char 存储定长的类型

        Varchar存储可变长的类型

20. 数据库设计,用户表与登录表分开的好处

    性能和安全

21. 分布式怎样解决session共享问题

    使用redis集中管理session

       session复制

              tomcat的session复制,可以实现session共享  只需搭建tomcat集群即可

       session绑定

              当用户A第一次访问系统时,tomcat1对其进行服务,那么,下次访问时仍然让tomcat1对其进行服务

22.  php __autoload机制

    自动加载机制

23. 三次握手与四次挥手的过程(主要是画图),各个参数的含义

    三次握手

第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=20001的包,此时状态由LISTEN变为SYN_RECV;

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功,双方状态ESTABLISHED。

       

   

四次挥手:

客户端向服务器发送FIN,请求关闭,进入FIN_WAIT_1状态。

服务端接受到FIN报文,然后需要告诉客户端,我已经知道请求,但还没有准备好,你可以继续等我消息,所以服务端发送ACK。然后可以进入CLOSE_WAIT状态

客户端接收到服务端数据,不做任何回应,进入FIN_WAIT_2状态。

服务端确认数据发送完成之后,发送FIN报文,告诉客户端可以关闭连接了,然后进入LAST_ACK状态。

客户端接收到FIN报文之后,进入TIME_WAIT状态,发送ACK确认报文,如果2msl时间没有反应则关闭连接。否则进行重传。

服务端在接收到ACK之后,关闭连接。

24. http与https的区别,https怎样保准安全(结合ssl)

   

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

25. 写出一个排序算法

    冒泡法:

        function bubbleSort($str){
    $_count=count($str);
    for($i=0;$i<$_count;$i++){
        for($j=$i+1;$j<$_count;$j++){
            if($str[$j]>$str[$i]){
                $tem=$str[$j];
                $str[$j]=$str[$i];
                $str[$i]=$tem;
            }
        }
    }
    return $str;
}
$str=array(8,5,4,3,32,2.4,54,59,6,7,);
print_r($str);
print_r(bubbleSort($str));
 
    快速排序法:
function qkSort($str){
    $_count=count($str);
    if($_count<2) return $str;
    $standard=$str[0];
    $_left=$_right=array();
    for($i=1;$i<$_count;$i++){
        if($str[$i]>$standard){
            $_left[]=$str[$i];
        }else{
            $_right[]=$str[$i];
        }
    }
    $_left=qkSort($_left);
    $_right=qkSort($_right);
    return array_merge($_left,array($standard),$_right);
}
$str=array(8,5,4,3,32,2.4,54,59,6,7,);
print_r($str);
print_r(qkSort($str));
 
26. 二分查找的思想
        1.只适用于一组有序数,杂乱无序的数是不能使用二分法查找的
        2.思想:根据你查找的数来判断查找前半段还是后半段
 
27. linux常用命令
        ls -a 列出目录所有文件,包含以.开始的隐藏文件
 
         ls -A 列出除.及..的其它文件
 
         ls -r 反序排列
 
         ls -t 以文件修改时间排序
 
         ls -S 以文件大小排序
 
         ls -h 以易读大小显示
 
         ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
        cd [目录名]。说明:切换当前目录至dirName
        pwd 查看当前工作目录路径
        mkdir t 创建t文件夹
        rm  删除一个目录中的一个或者多个文件或目录
        rmdir 删除空目录
        mv 移动文件
        cp 复制文件
        find 查找文件
        chmod 改变权限
        tar 压缩
        df 显示磁盘空间使用情况
        du 显示文件占用磁盘空情况
        free 显示系统内存使用情况

猜你喜欢

转载自www.cnblogs.com/lx0715/p/9956104.html
今日推荐