zoukankan      html  css  js  c++  java
  • php高级工程师面试题

     参考:

    https://www.php.cn/toutiao-415599.html (php面试题汇总)


     5、防sql注入方法

    mysql_escape_string(strip_tags($arr["$val"]));

    function post_check($post){   if(!get_magic_quotes_gpc()){// 判断magic_quotes_gpc是否为打开     $post =addslashes($post);// 进行magic_quotes_gpc没有打开的情况对提交数据的过滤   }   $post = str_replace("_","\_",$post);// 把 '_'过滤掉   $post =str_replace("%","\%",$post);// 把 '%'过滤掉   $post = nl2br($post);// 回车转换   $post =htmlspecialchars($post);// html标记转换   return $post; }

    6、mysql把一个大表拆分多个表后,如何解决跨表查询效率问题

    9、mysql的慢查询问题
    其实通过慢查询日志来分析是一种比较简单的方式,如果不想看日志,可以借助工具来完成,

    如mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter等,感觉自己来分析一个需要丰富的经验,一个浪费时间。

    10、关于用户登录状态存session,cookie还是数据库或者memcache的优劣

    关于用户登录状态存session%2Ccookie还是数据库或者memcache的优劣

    11、事务应用极端情况处理
    12、sql语言分4大类请列举
            DDL--CREATE,DROP,ALTER
            DML--INSERT,UPDATE,DELETE
            DQL-SELECT
            DCL--GRANT,REVOKE,COMMIT,ROLLBACK
             

    二、php基础

    session的跨域共享

    php连接mysql数据库的几种方式及区别
    mysql:面向过程
    mysqli:面向对象
    pdo:可移植性高  
    请参考:php基础系列:PHP连接MySQL数据库用到的三种API

    四、正则

          email,html,js等匹配

    五、开发基础

           进程和线程定义,区别和联系。
           进程的状态:运行run、就绪ready、等待wait

    六、Nosql数据库
           memcached、redis、mongodb的区别联系
           3个场景完全不同的东西。

    1.memcached:单一键值对内存缓存的,做对象缓存无可替代的分布式缓存;
    
    2.redis:是算法和数据结构的集合,快速的数据结构操作是他最大的特点,支持数据持久化;
    
    3.mongodb是bson结构、介于rdb和nosql之间的,更松散更灵活的,但是不支持事务,只用作非重要数据存储。


    七、常用linux命令
          比如软链接

    八、架构相关

    项目上线前的压力测试,单台服务器支持的并发数,pv数。

    一. 基本知识点

    1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。
    200 : 请求成功,请求的数据随之返回。
    301 : 永久性重定向。
    302 : 暂时行重定向。
    401 : 当前请求需要用户验证。
    403 : 服务器拒绝执行请求,即没有权限。
    404 : 请求失败,请求的数据在服务器上未发现。
    500 : 服务器错误。一般服务器端程序执行错误。
    503 : 服务器临时维护或过载。这个状态时临时性的。

    1.2 Include require include_once require_once 的区别.
    处理失败方式不同:
    require 失败时会产生一个致命级别错误,并停止程序运行。
    include 失败时只产生一个警告级别错误,程序继续运行。

    include_once/require_once和include/require 处理错误方式一样,
    唯一区别在于当所包含的文件代码已经存在时候,不在包含。

    1.3 PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等等。

    1.4 HEREDOC介绍
    一种定义字符串的方法。
    结构:
    <<<。在该提示符后面,要定义个标识符(单独一行),
    然后是一个新行。接下来是字符串 本身,
    最后要用前面定义的标识符作为结束标志(单独一行)
    注意:
    标识符的命名也要像其它标签一样遵守PHP的规则:
    只能包含字母、数字和下划线,并且必须以字母和下划线作为开头

    1.6 一些编译php时的configure 参数
    –prefix=/usr/local/php php安装目录
    –with-config-file-path=/usr/local/php/etc 指定php.ini位置
    –with-mysql=/usr/local/mysql mysql安装目录,对mysql的支持
    –with-mysqli=/usr/local/mysql/bin/mysql_config mysqli文件目录,优化支持
    –enable-safe-mode 打开安全模式
    –enable-ftp 打开ftp的支持
    –enable-zip 打开对zip的支持
    –with-bz2 打开对bz2文件的支持
    –with-jpeg-dir 打开对jpeg图片的支持
    –with-png-dir 打开对png图片的支持
    –with-freetype-dir 打开对freetype字体库的支持
    –without-iconv关闭iconv函数,种字符集间的转换
    –with-libxml-dir 打开libxml2库的支持
    –with-xmlrpc 打开xml-rpc的c语言
    –with-zlib-dir 打开zlib库的支持
    –with-gd 打开gd库的支持

    更多可以使用 ./configure help 查看


    1.8 (mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;
    int : 数值类型
    char : 固定长度字符串类型
    varchar : 可变长度字符串类型
    datetime : 时期时间类型
    text : 文本类型

    varchar和char有什么区别:
    a. char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。
    而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。

    b. char 固定长度,所以在处理速度上要比varchar快速很多,但是浪费存储空间,
    所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例。


    1.9 error_reporting 等调试函数使用
    error_reporting() 函数能够在运行时设置php.ini中 error_reporting 指令。
    所以可以再程序中随时调节显示的错误级别。
    使用此函数时 display_errors必须是打开状态。

    1.11 posix和perl标准的正则表达式区别;

    1.12 Safe_mode 打开后哪些地方受限.
    启动safe_mode,会对许多PHP函数进行限制,特别是和系统相关的文件打开、命令执行等函数.
    所有操作文件的函数将只能操作与脚本UID相同的文件.


    1.13 写代码来解决多进程/线程同时读写一个文件的问题。
    PHP是不支持多线程的,可以使用php的flock加锁函数实现。

    $fp = fopen("/tmp/lock.txt", "w+");
    if (flock($fp, LOCK_EX)) { // 进行排它型锁定
    fwrite($fp, "Write something here
    ");
    flock($fp, LOCK_UN); // 释放锁定
    } else {
    echo "Couldn't lock the file !";
    }
    fclose($fp);


    1.14 写一段上传文件的代码。

    $uploads_dir = '/uploads';
    foreach ($_FILES["error"] as $key => $error) {
      if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["tmp_name"][$key];
        $name = $_FILES["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }


    二. web 架构,安全,项目经验

    2.1 介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。

    2.3 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

    a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
    b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
    c. mysql库主从读写分离。
    d. 找规律分表,减少单表中的数据量提高查询速度。
    e. 添加缓存机制,比如memcached,apc等。
    f. 不经常改动的页面,生成静态页面。
    g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.


    2.4 写出一种排序算法(原理),并说出优化它的方法。


    2.5 请简单阐述您最得意的开发之作


    2.6 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题

    a. 确认服务器是否能支撑当前访问量。
    b. 优化数据库访问。参考2.3
    c. 禁止外部访问链接(盗链), 比如图片盗链。
    d. 控制文件下载。
    e. 使用不同主机分流。
    f. 使用浏览统计软件,了解访问量,有针对性的进行优化。


    2.7 您是否用过模板引擎? 如果有您用的模板引擎的名字是?
    Smarty

    2.8 请介绍Session的原理,大型网站中Session方面应注意什么?

    2.9 测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。


    2.10 正则提出一个网页中的所有链接.


    2.11 介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。


    2.12 您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。


    2.13 大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?


    2.14 相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。


    三. unix/linux 基本使用

    3.1 linux下查看当前系统负载信息的一些方法。


    3.2 vim的基本快捷键。


    3.3 ssh 安全增强方法;密码方式和rsa key 方式的配置。


    3.4 rpm/apt/yum/ports 装包,查询,删除的基本命令。


    3.5 Makefile的基本格式,gcc 编译,连接的命令,-O0 和-O3区别。


    3.6 gdb,strace,valgrind的基本使用.

  • 相关阅读:
    Jmeter与LoadRunner 测试Java项目的坑
    关于<forEach>的<if>混合使用显示数据
    无题。省
    无题。思
    767A Snacktower
    喵哈哈村的括号序列

    队列
    优先队列
    768A Oath of the Night's Watch
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/9670727.html
Copyright © 2011-2022 走看看