• 2013腾讯web前端实习生一面面试题


    1、@:屏蔽错误信息。

    2、php错误类型

    error_reporting() 设置 PHP 的报错级别并返回当前级别。

    //禁用错误报告

    error_reporting(0);

    E_ALL - 所有的错误和警告  

    E_ERROR - 致命性运行时错  

    E_WARNING - 运行时警告(非致命性错)  

    E_PARSE - 编译时解析错误  

    E_NOTICE - 运行时提醒(这些经常是是你的代码的bug引起的,

    常量

    描述

    1

    E_ERROR

    Fatal run-time errors. Errors that can not be recovered from. Execution of the script is halted

    2

    E_WARNING

    Non-fatal run-time errors. Execution of the script is not halted

    4

    E_PARSE

    Compile-time parse errors. Parse errors should only be generated by the parser

    8

    E_NOTICE

    Run-time notices. The script found something that might be an error, but could also happen when running a script normally

    8191

    E_ALL

    All errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0)

    关闭错误:error_reporting(0);

    报告指定的错误:error_reporting(E_ERROR | E_WARNING | E_PARSE);

    报告除了^(仅指一个)指出的错误:error_reporting(E_ALL ^ E_NOTICE);

    报告所有错误:error_reporting(E_ALL);或error_reporting(-1);

    3、MVC模型

    4、http请求:

    304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

    5、CI

    CI优点:1、免费,开源。2、生成干净的url,对搜索引擎友好。3、可扩展的,可以自定义类库和辅助函数。4、不需要模板引擎。

    6、php路由

    php的路由机制

    1、路由机制就是把某一个特定形式的URL结构中提炼出来系统对应的参数。举个例子,如:http://main.wopop.com/article/1  其中:/article/1  -> ?_m=article&id=1。

    2、然后将拥有对应参数的URL转换成特定形式的URL结构,是上面的过程的逆向过程。

    PHP的URL路由方式

    总体来说就是:获取路径信息->处理路径信息

    URL路由方式:

    第一种是通过url参数进行映射的方式,一般是两个参数,分别代表控制器类和方法比如index.php?c=index&m=index映射到的是index控制器的index方法。

    第二种,是通过url-rewrite的方式,这样的好处是可以实现对非php结尾的其他后缀进行映射,当然通过rewrite也可以实现第一种方式,不过纯使用rewrite的也比较常见,一般需要配置apache的rewrite规则 

    1. <IfModule mod_rewrite.c>  

    2.     RewriteEngine On  

    3.     RewriteBase /  

    4.     RewriteRule ^index\.php$ - [L]  

    5.     RewriteCond %{REQUEST_FILENAME} !-f  

    6.     RewriteCond %{REQUEST_FILENAME} !-d  

    7.     RewriteRule . /index.php [L]  

    8. </IfModule>  

    第三种,就是通过pathinfo的方式,所谓的pathinfo,就是形如这样的url。xxx.com/index.php/c/index/aa/cc,apache在处理这个url的时候会把index.php后面的部分输入到环境变量$_SERVER['PATH_INFO'],它等于/c/index/aa/cc。然后我们的路由器再通过解析这个串进行分析就可以了,后面的部分放入到参数什么地方的,就依据各个框架不同而不同了。

    7、缓存

    在WEB开发中,缓存可以分为:

    1、数据库端缓存

    “空间换时间”。比如建一个表来存储另外一个表某个类型的数据的总条数,在每次更新数据的时候同事更新数据表和统计条数的表。在需要获取某个类型的数据的条数的时候,就不需要select count去查询,直接查询统计表就可以了,这样可以提高查询的速度和数据库的性能。

    2、应用层缓存

    应用层缓存这块跟开发人员关系最大,也是平时经常接触的。

    1.缓存数据库的查询结果,减少数据的压力。这个在大型网站是必须做的。

    2.缓存磁盘文件的数据。比如常用的数据可以放到内存,不用每次都去读取磁盘,特别是密集计算的程序,比如中文分词的词库。

    3.缓存某个耗时的计算操作,比如数据统计。

    3、前端缓存

    前端缓存可以理解为一般使用的cdn技术,利用squid等做前端缓冲技术,主要还是针对静态文件类型,比如图片,css,js,html等静态文件。

    4、客户端缓存

    客户端缓存依赖于浏览器的实现,目前一般的浏览器都实现了基于http都信息来缓存相应的文件。

    php缓存

    1、普遍缓存技术:

    数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。

    2、页面缓存:

    每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些PHP缓存机制类通常有此功能)

    3、时间触发缓存:

     检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。

    4、内容触发缓存:

     当插入数据或更新数据时,强制更新PHP缓存机制。

    5、静态缓存:

    这里所说的静态缓存是指静态化,直接生成HTMLXML等文本文件,有更新的时候重生成一次,适合于不太变化的页面,这就不说了。

    6、内存缓存:

    Memcached是高性能的,分布式的内存对象PHP缓存机制系统,用于在动态应用中减少数据库负载,提升访问速度。

    8、浏览器缓存

    最简单的方法是在头部加<meta>标签

    <METAHTTP-EQUIV="Cache-Control" CONTENT="no-cache,no-store,must-revalidate">

    <METAHTTP-EQUIV="pragma" CONTENT="no-cache">

    <METAHTTP-EQUIV="expires" CONTENT="0">

    <?php

    header("Cache-control:no-cache,no-store,must-revalidate");

    header("Pragma:no-cache");

    header("Expires:0");

    ?>

    如果在<META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache,no-store, must-revalidate”>或header(“Cache-control:no-cache,no-store,must-revalidate”);中少了no-store就解决不了火狐的缓存了

    9、php最大内存

    memory_limit = 128M;

    修改1、php.ini文件中

    修改2:php文件中,ini_set('memory_limit','128M');

    10、页面访问慢,如何解决?

       先查找页面慢的原因,在解决,发现问题比解决问题更重要。

    11、get与post

    1.安全性get 请求的数据会显示在 地址栏上, post请求的数据,放在http协议的消息体

    2. 从可以提交数据的大小看.

    2.1  http协议本身并没有限制数据大小.

    2.2  浏览器在对get 和post请求做显示, get 请求数据 2k+35  ,post没有显示.

    3.  get请求可以更好的添加到收藏夹.

    13、数组类型:

       有三种数组类型:

    1、   数值数组:数值数组存储的每个元素都带有一个数字 ID 键。

    $names =array("Peter","Quagmire","Joe");

    2、   关联数组(key=>value):它的每个 ID 键都关联一个值。在存储有关具体命名的值的数据时,使用数值数组不是最好的做法。

    通过关联数组,我们可以把值作为键,并向它们赋值

    $ages = array("Peter"=>32,"Quagmire"=>30, "Joe"=>34);

    3、   多维数组:在多维数组中,主数组中的每个元素也是一个数组。在子数组中的每个元素也可以是数组

    Array

    (  

    [Griffin] => Array 

    (

          [0] => Peter

      [1]=> Lois

       )

    [Brown] => Array

       (

          [0] => Cleveland

    [1] => Loretta

     )

    )

    web测试工具:PhpUnit,Web Application Stress Tool

  • 相关阅读:
    parentNode和parentElement区别
    初学canvas,遇到width和height显示问题和用excanvas.js兼容IE问题
    Java学习笔记28(集合框架二:Iterator迭代器)
    Java学习笔记27(集合框架一:ArrayList回顾、Collection接口方法)
    Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)
    Java学习笔记25(System类)
    Java学习笔记24(Integer类)
    Java学习笔记23(Calendar类)
    Java学习笔记22(Date类、DateFormat类)
    Java学习笔记21(String类补充:正则表达式)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3037482.html
Copyright © 2020-2023  润新知