zoukankan      html  css  js  c++  java
  • php面试题9(看的时候就应该随手截图做笔记的)

    php面试题9(看的时候就应该随手截图做笔记的

    一、总结

    看的时候就应该随手截图做笔记的

    二、php面试题9

    一、选择题:
    1.下面哪个表达式不能将两个字符串$s1 和$s2 串联成一个单独的字符串?( )
    A.$s1+$s2 B.“{$s1}{$s2}”  C.$s1.$s2
    D.implode(‘’,array($s1,$s2))  E.以上所有的方法都能实现
    2.下面的脚本运行以后,$array 数组所包含的值是什么?( )
     $array  =array(‘1’,’1’);
     foreach($arrayas$k=>$v){
      $v=2;
    }
    A.array(‘2’,’2’) B.array(‘1’,’1’)C.array(2,2)  D.array(Null,Null) 

    二、问答题:
    1.写出下列代码的输出结果:
    functionmyfunc($argument){
     echo$argunment+10; //这里多了一个 n 字母,变量为空,就相当于直接 echo10
    }
    $variable=10;
    echo“myfunc($variable)=”.myfunc($variable);
    结果:10myfunc(10)=

    2.请用尽可能少的语句实现对输出 Email 地址进行验证的功能:
    If(!preg_match(‘/^w+@(w.)+(com|cn|net|org|cc)/’,$_POST[‘email’],$arr,)){
    Echo ‘邮箱格式不正确’;
    }

    简述 cookie 和 session 的区别各自的工作机制,存储位置等,简述 cookie 的优缺点。
    1) SESSION:存储在服务器端, cookie:存储在客户端
    2) 两者都可通过时间来设置时间长短
    3) cookie 不安全,考虑安全性还是用 session
    4) session 保存到服务器端,如果访问量过大,对服务器性能很影响,应使用 memcache 缓存
    session
    5) 单个 COOKIE 在客户端限制是 3K,即存放的 cookie 不能超过 3K,SESSION 没有限制
    6) 禁止了 COOKIE 后 SESSION 是不能使用的,session 因为存储在服务器端,具体路径在
    php.ini 中 session_dir 目录中,是私有的每个用户产生 session 都不同

    三、Linux 选择题:
    1.cron 后台常驻程序(daemon)用于:crond
    A. 负责文件在网络中的共享
    B. 管理打印子系统 Managestheprintingsubsystem

    C. 跟踪管理系统信息和错误
    D. 管理系统日常任务的调度(scheduing)

    2.怎么了解您在当前目录下还有多大空间?//du –sh /mnt
    A.Usedf
    B.Usedu/
    C. Use du.
    D.Usedf.

    3. 有一个备份程序 mybackup,需要在周一至周五下午一点和晚上八点各运行次,下面哪
    一条 crontab 的项可以完成这项工作?
    A.013,20**1,5mybackup
    B.0 13,20 * * 1,2,3,4,5 mybackup
    C.*13,20**1,2,3,4,5,mybackup
    D.013,201,5**mybackup

    4. 下面哪条命令可以把 f1.txt 复制为 f2.txt? //cp rsync
    A.cp f1.txt f2.txt
    B.catf1.txt|f2.txt
    C.catf1.txt|f2.txt
    B.copyf1.txt|f2.txt


    5. 使用命令可以查看 Linux 的启动信息?
    A.mesg–d
    B.dmesg

    C.cat/etc/mesg
    D.cat/var/mesg


    6. 在 vi 中退出不保存的命令?
    A.:qt
    B.:r
    C.:wq
    D.:q!

    四、其他相关技术:
    1.如何判断 SQL 语句的运行效率?如何优化一个查询 SQL?
    1)desc select * from table;
    2)加索引
    
    2.试写出 mysql 数据库优化的一些方法
    1)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置 NOT NULL,例如’省
    份,性别’,最好设置为 ENUM
    (2)使用连接(JOIN)来代替子查询:
    (3)建立索引:
    (4)使用扩展库 PDO /或者 mysqli 使用预处理 stmt 缓存字段
    (5) 优化查询语句最好在相同字段进行比较操作 ,select 查询的时候尽量少用*,用到什么
    字段查什么字段在 sql 语句中尽量少用 mysql 的函数,我们在 PHP 端处理好后再交给

    mysql
    (6) 不要用 like 来查询 这样很不效率,用 Sphinx 全文检索
    (7)分区技术
    (8)主从数据库
    (9)结合 memcache
    (10)结合 sphinx 全文检索
    
    1.sql 语句优化(索引优化)
    2.表优化
    表复制
    视图表
    分库分表
    分区
    3.数据库优化和服务器优化
    字符集
    Mysql 主从
    Mysql 集群

    3.apache 默认使用进程管理还是线程管理?如何判断并设置最大连接数?
    /usr/local/apache2/bin/apachectl –l|grep prefork.c
    Prefork.c

    Serverlimit 2000
    Maxclient 1000
    
    4.简述 smarty 的工作原理,如何对 smarty 进行二次开发?
    工作原理:经过处理正则替换把模板中的变量替换成我们要的数据然后输出
    开发插件
    1)smarty php 引擎 ->tpl 模板->编译文件(php 和 html 混合文件)->静态化文件(html)

    5.ajax 技术利用了什么协议?简述 ajax 的工作机制。
    <script>
    Var aj=new XMLHttpRequest; //第一步产生对象
    Aj.open(‘post’,’http://8878.sinaap.com/get.php’); // 第 二 步 确
    定发送方式和打开连接
    Aj.setRequestHeader(‘Content-type’,’text/html;charset=utf-8’);
    //解决了
    Aj.setRequestHeader(‘Content-type’,’application/x-www-form-urlencoded’);//第三步解决字符集,或者声明发送类型
    Aj.send(‘username=gaoqiin&pass=kkk’) //第四步:发送数据

    Aj.onreadystatechange=function(){ //第五步:接收状态值
    If(aj.readyState==4){ //第六步判断状态
    if(aj.status==200){ //第七步:成功后处理数据
    alert(‘成功’)
    }
    }
    }
    </script>

    6.利用 ajax 开发时,需要考虑浏览器的兼容性么?如果需要,常需要考虑哪些?ajax 开
    发常会遇到哪些问题,试举例说明?
    需要!
    考虑火狐和 IE 的兼容性,因为他们的 ajax 对象不同,所以我们都需要考虑到
    应该注意:
    在 Microsoft 浏览器上创建 XMLHttpRequest 对象
    var xmlHttp = false;
    try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    } catch (e2) {
    xmlHttp = false;
    }
    }

    7.利用 ajax 传输数据时,一般默认使用的是什么编码方式?如果出现乱码如何处理?
    默认使用 UTF8 编码
    出现乱码解决
    比如 <script>
    Var aj=new XMLHttpRequest;
    Aj.open(‘post’,’http://8878.sinaap.com/get.php’);
    Aj.setRequestHeader(‘Content-type’,’text/html;charset=utf-8’);
    //解决了
    Aj.setRequestHeader(‘Content-type’,’application/x-www-form-urlenco
    ded’);
    Aj.send(‘username=gaoqiin&pass=kkk’)
    Aj.onreadystatechange=function(){
    If(aj.readyState==4){
    if(aj.status==200){

    alert(‘成功’)
    }
    }
    }
    </script>
    Get
    Post
    Post enctype

     

     

     基础题:
    1.表单中 get 与 post 提交方法的区别?
    答:get 是发送请求 HTTP 协议通过 url 参数传递进行接收,而 post 是实体数据,可以通过表
    单提交大量信息.


    2.session 与 cookie 的区别?
    答:session:储存用户访问的全局唯一变量,存储在服务器上的 php 指定的目录中的
    (session_dir)的位置进行的存放
    cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于 Cookie 来说是存
    储在用户 WIN 的 Temp 目录中的。
    两者都可通过时间来设置时间长短
     
    3.数据库中的事务是什么?
    答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都
    成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,
    
    事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该
    事务所有操作的影响都将取消。

     简述题:
    1、用 PHP 打印出前一天的时间格式是 2006-5-10 22:21:21(2 分)
    答:echo date('Y-n-d H:i:s', strtotime('-1 day'));
    
    2、echo(),print(),print_r()的区别(3 分)
    答:echo 是 PHP 语句, print 和 print_r 是函数,语句没有返回值,函数可以有返回值(即便没
    有用)
    print() 只能打印出简单类型变量的值(如 int,string)
    print_r() 可以打印出复杂类型变量的值(如数组,对象)
    echo 输出一个或者多个字符串
    3、能够使 HTML 和 PHP 分离开使用的模板(1 分)
    答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate
     
    5、使用哪些工具进行版本控制?(1 分)
    答:cvs,svn,vss;
    subversion
    
    6、如何实现字符串翻转?(3 分)
    答:echo strrev($a);

    7、优化 MYSQL 数据库的方法。(4 分,多写多得)
    答:
    1) 选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置 NOT NULL,例如'省
    份,性别',最好设置为 ENUM
    2) 使用连接(JOIN)来代替子查询:
    a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT
    in(SELECT customerid FROM orderinfo)
    b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT
    in(SELECT customerid FROM orderinfo)
    c. 提 高 b 的 速 度 优 化 :SELECT FROM customerinfo LEFT JOIN orderid
    customerinfo.customerid=orderinfo.customerid
    WHERE orderinfo.customerid IS NULL
    3) 使用联合(UNION)来代替手动创建的临时表
    a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM
    `nametest2`
    4) 事务处理:
    a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败
    mysql_query("BEGIN");
       mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
    mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
    mysql_query("COMMIT");

    5) 锁定表,优化事务处理:
    a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更
    新到表中。
    包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令
    被执行之前,
    不会有其它的访问来对 inventory 进行插入、更新或者删除的操作
    mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");
    mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
    mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where
    customerid=".$id);
    mysql_query("UNLOCK TABLES");
    6) 使用外键,优化锁定表
    a.把 customerinfo 里的 customerid 映射到 orderinfo 里的 customerid,
    任何一条没有合法的 customerid 的记录不会写到 orderinfo 里
    CREATE TABLE customerinfo
    (
    customerid INT NOT NULL,
    PRIMARY KEY(customerid)
    )TYPE = INNODB;
    CREATE TABLE orderinfo
    (

    orderid INT NOT NULL,
    customerid INT NOT NULL,
    PRIMARY KEY(customerid,orderid),
    FOREIGN KEY (customerid) REFERENCES customerinfo
    (customerid) ON DELETE CASCADE
    )TYPE = INNODB;
    注意:'ON DELETE CASCADE',该参数保证当 customerinfo 表中的一条记录删除的话
    同时也会删除 order
    表中的该用户的所有记录,注意使用外键要定义事务安全类型为 INNODB;
    7) 建立索引:
    a.格式:
    (普通索引)->
    创建:CREATE INDEX <索引名> ON tablename (索引字段)
    修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)
    创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))
    (唯一索引)->
      创建:CREATE UNIQUE <索引名> ON tablename (索引字段)
    修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)
    创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))
    (主键)->
    它是唯一索引,一般在创建表是建立,格式为: 

     CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])
    8) 优化查询语句
    a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作
    例子 1:
    SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)
    SELECT * FROM order WHERE orderDate<"2008-01-01";(快)
    例子 2:
    SELECT * FROM order WHERE addtime/7<24;(慢)
    SELECT * FROM order WHERE addtime<24*7;(快)
    例子 3:
    SELECT * FROM order WHERE title like "%good%";
    SELECT * FROM order WHERE title>="good" and name<"good";

     8、PHP 的意思(送 1 分)
    答:PHP 是一个基于服务端来创建动态网站的脚本语言,您可以用 PHP 和 HTML 生成网站
    主页
     
    9、MYSQL 取得当前时间的函数是?,格式化日期的函数是(2 分)
    答:now(),date()

     10、实现中文字串截取无乱码的方法。(3 分)

     答:mb_substr();
    mb_strcut();
     
    11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1 分)
    subversion svn
    
    12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1 分)
    答:用过,smarty
    
    14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4 分)
    答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表,
    程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量
     
    15、用 PHP 写出显示客户端 IP 与服务器 IP 的代码 1 分)
    答:打印客户端 IP:echo $_SERVER[‘REMOTE_ADDR’];
    echo $_SERVER[‘SERVER_ADDR’];

     16、语句 include 和 require 的区别是什么?为避免多次包含同一文件,可用(?)语句代替
    它们? (2 分)
    答:require->require 是无条件包含也就是如果一个流程里加入 require,无论条件成立与
    否都会先执行 require

     include->include 有返回值,而 require 没有(可能因为如此 require 的速度比 include
    快)
    注意:包含文件不存在或者语法错误的时候 require 是致命的,include 不是
     
    17、如何修改 SESSION 的生存时间(1 分).
    答:
    <?php
    session_start();
    // 保存一天
    $lifeTime = 24 * 3600;
    setcookie(session_name(), session_id(), time() + $lifeTime, "/");
    ?>


    18、有一个网页地址, 比如 PHP 开发资源网主页: http://www.phpres.com/index.html,
    如何得到它的内容?($1 分)
    答:
    echo file_get_contents("http://www.phpres.com/index.html");
    

    19、在 HTTP 1.0 中,状态码 401 的含义是(?);如果返回“找不到文件”的提示,则可用
    header 函数,其语句为(?);(2 分)
    答:状态 401 代表未被授权,header("Location:www.xxx.php");
    js:window.location.href="http://www.baidu.com";

    20、在 PHP 中,heredoc 是一种特殊的字符串,它的结束标志必须?(1 分)
    答:heredoc 的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字
    符串
    例子:
    $str = <<<SHOW
    my name is Jiang Qihui!
    SHOW;

    21、谈谈 asp,php,jsp 的优缺点(1 分)
    答:ASP 全名 Active Server Pages,是一个 WEB 服务器端的开发环境, 利用它可以产生
    和运
    行动态的、交互的、高性能的 WEB 服务应用程序。ASP 采用脚本语言 VB Script 作为自
    己的开发语言。
      PHP 是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用 C,Java 和 Perl 语言
    的语法, 并耦合 PHP 自己的特性,使 WEB 开发者能够快速地写出动态生成页面.它支持目前
    绝大多数数据库。还有一点,PHP 是完全免费的,不用花钱,你可以从 PHP 官方站点
    (http://www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你
    自己需要的特色。
    JSP 是 Sun 公司推出的新一代站点开发语言,他完全解决了目前 ASP,PHP 的一个通

    病--脚本级执行(据说 PHP4 也已经在 Zend 的支持下,实现编译运行).Sun 公司借
    助自己在 Java 上的不凡造诣,将 Java 从 Java 应用程序 和 Java Applet 之外,又有
    新的硕果,就是 Jsp--Java Server Page。Jsp 可以在 Serverlet 和 JavaBean 的支持
    下,完成功能强大的站点程序。
      三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能
    力。但 JSP 代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP
    页面的第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信
    息的显样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务
    器,而 ASP 、PHP、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执
    行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP 三者
    都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持

  • 相关阅读:
    列出本年度所有星期天的日期
    批量与快速禁用用户
    显示本月每一天日期
    ASP.NET + VB.NET + SQL小网站程序
    重设Syteline sa帐户密码
    ASP.NET系统 + Access数据库
    2的倍数相加后如何还原
    根据Forms名找出其所归属的权限组
    401 Unauthorized:access is denied due to invalied credentials
    The remote server returned an error: (404) Not Found
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9076383.html
Copyright © 2011-2022 走看看