zoukankan      html  css  js  c++  java
  • php面试题

    1、请说明 PHP 中传值与传引用的区别,什么时候传值什么时候传引用?

      按值传递:函数范围内对值的任何改变在函数外部都会被忽略

      按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

      优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

        按引用传递则不需要复制值,对于性能提高很有好处。

    2、对于大流量的网站,采用什么样的方法来解决访问量问题?

    • 确认服务器硬件是否足够支持当前的流量
    • 优化数据库访问。
    • 禁止外部的盗链。
    • 控制大文件的下载。
    • 使用不同主机分流主要流量
    • 使用流量分析统计软件
    • 尽量使用静态页,缓存

    3、SESSION 与 COOKIE的区别是什么?

      SESSION存储在服务器端,COOKIE保存在客户端。

      Session比较安全,cookie用某些手段可以修改,不安全。

      Session依赖于cookie进行传递。禁用cookie后,session还可以使用,在存储session的文件中,生成sessionID,通过get传参的方式将sessionID传到要实现session共享的页面,读取sessionID,从而从session中获取数据。

    4、include和require的区别是什么?

      require:require("########");这个函数一般放在PHP文件的最前面,程序在执行前就会先导入要引用的文件。

      include:include("############");这个函数一般放在程序的流程控制里边。只有程序在执行碰到才会引用。可以简化程序的执行流程。

      最根本的区别在于遇到错误的处理方式还有require没有返回值而include有返回值。

      require:一个文件存在错误时,执行就会中断。并返回一个致命错误。

      include:一个文件存在错误,程序不会中断执行。会弹出一个警告。

    5、如何获取客户端的IP地址?

      $_SERVER[‘REMOTE_ADDR’]

    6、写出使用header函数跳转页面的语句

      Header(‘location:index.php’);

    7、怎么保证促销商品不会超卖?

      第一种方案:在每次下订单前我们判断促销商品的数量够不够,不够不允许下订单,更改库存量时加上一个条件,只更改商品库存大于0的商品的库存,当时我们使用ab进行压力测试,当并发超过500,访问量超过2000时,还是会出现超卖现象。所以被我们否定了。

      第二种方案:使用mysql的事务加排他锁来解决,首先我们选择数据库的存储引擎为innoDB,使用的是排他锁实现的,刚开始的时候我们测试了下共享锁,发现还是会出现超卖的现象。有个问题是,当我们进行高并发测试时,对数据库的性能影响很大,导致数据库的压力很大,最终也被我们否定了。

      第三种方案:使用文件锁实现。当用户抢到一件促销商品后先触发文件锁,防止其他用户进入,该用户抢到促销品后再解开文件锁,放其他用户进行操作。这样可以解决超卖的问题,但是会导致文件得I/O开销很大。

      最后我们使用了redis的队列来实现。将要促销的商品数量以队列的方式存入redis中,每当用户抢到一件促销商品则从队列中删除一个数据,确保商品不会超卖。这个操作起来很方便,而且效率极高,最终我们采取这种方式来实现

    8、商城秒杀的实现?

      抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:

    • 高并发对数据库产生的压力
    • 竞争状态下如何解决库存的正确减少("超卖"问题)

    对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。第二个问题,我们可以使用redis队列来完成,把要秒杀的商品放入到队列中,因为pop操作是原子的,即使有很多用户同时到达,也是依次执行,文件锁和事务在高并发下性能下降很快,当然还要考虑其他方面的东西,比如抢购页面做成静态的,通过ajax调用接口,其中也可能会出现一个用户抢多次的情况,这时候需要再加上一个排队队列和抢购结果队列及库存队列。高并发情况下,将用户进入排队队列,用一个线程循环处理从排队队列取出一个用户,判断用户是否已在抢购结果队列,如果在,则已抢购,否则未抢购,库存减1,写数据库,将用户入结果队列。

    9、

  • 相关阅读:
    Android studio测试软件——Monkey学习及运用
    MockPlus原型设计介绍
    MockPlus,一款好用的原型设计软件
    44道JavaScript难题 ---- 送命题
    使用JSONP实现跨域
    XML-RPC简单理解与博客园的MetaWeblog协议
    新型冠状病毒防控知识问答
    树莓派搭建个人服务器
    树莓派也跑Docker和.NET Core
    BugNet使用指南
  • 原文地址:https://www.cnblogs.com/gentlemanwuyu/p/11523426.html
Copyright © 2011-2022 走看看