php高级研发或架构师必了解---不少问题面试中常问到!

版权声明:本文为博主原创文章,未经博主容许不得转载。
最近接连面试了几家公司,有些重要问题记录一下,督促本身学习提升,同时但愿给朋友们一些帮助。
内容不少,一点点完善,一步步学习。。
有些是面试被问,有些是招聘要求,有些是本身整理加的。

1、MySQL相关知识
    1、 mysql优化方式
            MYSQL 优化经常使用方法
            mysql 性能优化方案
  
    2、如何分库分表
           参考:
   http://blog.sina.com.cn/s/blog_6e322ce70100zs9a.html
           http://www.jb51.net/article/29771.htm

   3、 Mysql+如何作双机热备和负载均衡
http://www.dewen.org/q/51/Mysql+如何作双机热备和负载均衡
   
   4、数据表类型有哪些
       MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等
       MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。
       InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。

       myisam和Innodb引擎的主要特色
       MySQL的存储引擎MyISAM与InnoDB有什么区别?

   5、防sql注入方法
      mysql_escape_string(strip_tags($arr["$val"]));

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

[php] view plain copy
在CODE上查看代码片派生到个人代码片

    /** 
    * 函数名称:post_check()  
    * 函数做用:对提交的编辑内容进行处理  
    * 参  数:$post: 要提交的内容  
    * 返 回 值:$post: 返回过滤后的内容  
    */  
    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;  
    }  

   7、索引应用
         什么状况下考虑索引
         什么状况不适合索引
         一个语句是否用到索引如何判断
        常常发生的用不到索引的场景:
                like '%.....'
                数据类型隐式转换
                or 关键字加其它条件约束
       全文索引:
                只能用于MYIsAM表,在CHAR,VARCHAR,TEXT类型的列上建立。
      

   8、mysql对于大表(千万级),要怎么优化呢?
        参考http://www.zhihu.com/question/19719997

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

如mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter等,感受本身来分析一个须要丰富的经验,一个浪费时间。

10、关于用户登陆状态存session,cookie仍是数据库或者memcache的优劣 http://www.dewen.org/q/11504/

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

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

2、php基础

      session的跨域共享

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


3、php高级

    长链接和短链接的使用

    socket的使用

    支付安全问题

    面向对象
    三大特性:封装、继承、多态(方法重写)。
    抽象类:abstract,至少有一个方法是抽象方法,不能被实例化,为子类定义公共接口。
    接口:interface,解决php的单继承问题,全部方法都是public访问权限的抽象方法,不能声明变量只能声明常量。
    继承一个类的同时实现多个接口
    class A  extends B implements 接口1,接口2...,接口n(){
          //实现全部接口中的方法
    }
    lamp 和 lnmp 网站架构性能差别的缘由分析
    解释性语言和编译性语言的性能分析,举例。

4、正则

      email,html,js等匹配

5、开发基础

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

6、Nosql数据库
       memcached、redis、mongodb的区别联系
       3个场景彻底不一样的东西。1.memcached:单一键值对内存缓存的,作对象缓存无可替代的分布式缓存;2.redis:是算法和数据结构的集合,快速的数据结构操做是他最大的特色,支持数据持久化;3.mongodb是bson结构、介于rdb和nosql之间的,更松散更灵活的,可是不支持事务,只用做非重要数据存储。
     参考 MongoDB 或者 redis 能够替代 memcached 吗?

7、经常使用linux命令
      好比软连接

8、架构相关

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


           服务器资源合理分配问题

             CPU:Apache
                   MySQL处在高负载环境下,磁盘IO读写过多,确定会占用不少资源,必然会CPU占用太高。
             内存:内存库,数据库软件
                
             硬盘:文件

           web2.0架构选择

              MongoDB+Redis 或者 MySQL+Memcached 比较好的组合,逻辑简单的就用NOSQL

           当前流行主要网站架构
    LAMP、LNMP、LLMP
    如今网络上还有一种LNAMP构架,也就是综合了nginx和Apache的优势,使用Apache负载PHP,nginx负责解析其余Web请求,使用nginx的rewrite模块,可是Apache端口不对外开放,Apache的许多模块均可以不加载减小资源。
相关文章
相关标签/搜索