• 小刘的PHP面试碰到的坑


    php基础)
    1、陌陌在20170201 ~ 20170209举行了签到活动,参加活动用户的userid为 1 ~ 10000000,由于签到接口的请求量过大,现决定签到时10%的概率分享一条留言板。
    ua格式为Momo/1.1.1 Android/1132 (SM901; Android 6.0.1; Gapps 0; zh_CN; 1; smartisan

    1)如何通过php判断20170201 ~ 20170209这个时间段?

    2)如何通过php进行概率控制?
    rand mt_rand()
    3)现决定签到时Android的用户会分享一条留言板。如何通过php判断是否为Android用户发起请求?
    $_SERVER[‘HTTP_USER_AGENT’]

    (linux)
    2、现在有一份陌陌的nginx access日志,文件名为 nginx-20170222.log。


    [22/Feb/2017-18:51:58] api.momo.com /api/feed HTTP/1.1 121.0.0.1 android1.2
    [22/Feb/2017-18:51:59] api.momo.com /api/follow HTTP/1.1 121.0.0.2 iphone1.1
    [22/Feb/2017-18:52:58] api.momo.com /api/user HTTP/1.1 121.0.0.3 iphone1.1
    [22/Feb/2017-18:52:41] api.momo.com /api/feed HTTP/1.1 121.0.0.4 android1.2
    [22/Feb/2017-18:56:30] api.momo.com /api/follow HTTP/1.1 121.0.0.2 android1.2
    [22/Feb/2017-18:51:21] api.momo.com /api/user HTTP/1.1 121.0.0.3 iphone1.1
    [22/Feb/2017-18:59:58] api.momo.com /api/user HTTP/1.1 121.0.0.3 android1.2
    [22/Feb/2017-18:51:21] api.momo.com /api/feed HTTP/1.1 121.0.0.1 iphone1.1

    备注:分隔符为空格

    1)请使用linux命令找出18点的所有日志
    sed -n ‘/2015-08-14 09:00:00/,/2015-08-14 11:00:00/p’ access.log
    2)请使用linux命令找出该文件在服务器上的存储路径
    pwd find whereis
    3)请使用linux命令找出该文件中请求量最高的3个ip

    cat access.log|awk -F" " ‘{print $2}’|sort|uniq -c|sort -nrt " “|awk -F” " ‘{print $2}’|head -10

    4)请使用linux命令找出使用该文件的进程id
    ps -aux|grep ‘xxx’
    ps -ef|grep ‘xxx’
    ps -A|grep ‘xxx’
    5)服务器内存下降很快,如何定位到原因
    top
    (db)

    3、现发现一ip在大量访问陌陌签到接口。
    如封禁策略为一自然分钟内请求签到接口500次则封禁该ip10分钟,如何操作?
    redis 控制

    (缓存)

    4、陌陌签到活动的接口请求量非常大,需要使用缓存来缓解db压力。
    请列出所有使用过的缓存机制,并简单介绍每个缓存的生命周期。

    (算法)

    5、现在服务器资源有点紧张,提供给签到活动用来记录 “是否签到过” 的内存只有10M,参加活动用户的userid为 1 ~ 10000000。
    请设计合理解决方案
    (综合)

    6、如何计算一个服务的平均耗时,根据自己实践经验,如何将一个接口的平均耗时降低50%。

    (综合)

    7、日请求上亿的接口,简要描述下如何做到高可用。

    (综合)

    8、服务器负载报警, 如何快速定位到问题。

    (原理)

    9、cgi、apache_mod、fastcgi有什么区别?

    (安全)
    10、请简述php hash冲突攻击原理

    ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

    一、PHP基础

    基础部分

    [2.0] 基本语法、日期操作函数、数组操作函数、字符串操作函数等。

    [3.5] 比较了解PHP运行机制、扩展机制、常见操作的底层实现原理等。

    SESSION

    [2.5] 默认Session使用方法与作用。

    [3.0] Session与COOKIE的联系(SESSIONID)。

    [3.5] Session在集群中的使用方法及自定义实现方法。

    [4.0] Session防劫持、高可用等方面的思考。

    OOP相关

    [2.5] publicprotectedprivate的区别

    [3.0] Abstract Class、Interface的区别

    http://m.blog.csdn.net/article/details?id=6124319

    [3.0] 各个魔术方法

    [3.0] exception的使用方法

    [3.5] 常用设计模式

    https://www.ibm.com/developerworks/cn/opensource/os-php-designptrns/

    错误处理

    [2.5] 错误级别(Notice、Warning、Error)。

    http://www.cnblogs.com/iuky/archive/2011/09/24/2189561.html

    http://www.cnblogs.com/yjf512/p/5314345.html

    [3.0] 触发Error错误的常见操作。

    [3.0] 自定义错误处理的方法。

    PHP运维层面

    [3.0] 常见的php.ini 参数。

    http://m.blog.csdn.net/article/details?id=48372525

    [3.5] FPM的进程管理模式。

    http://www.jianshu.com/p/c9a028c834ff?hmsr=toutiao.io

    [3.5] PHP扩展编译、安装等管理方法。

    [3.5] 十分熟悉xhprof或比其更好的性能分析工具。

    其他

    [2.5] 正确的多字节字符截取方法。

    [3.0] 类的自动加载方法。

    [3.0] MVC分层实现方式等。

    二、服务器相关

    LINUX

    [2.5] 熟练使用tail、less等。

    [3.0] 熟练使用grep、find、sed、awk等基本用法。

    [3.5] 了解文件权限规则。

    [3.5] 了解用户权限、用户管理、包管理、硬盘容量管理等。

    NGINX

    [3.0] 常见配置(serverlocation ewrite)

    [3.5] 负载均衡、反向代理等。

    数据库相关

    [3.0] 事务相关SQL语句执行方法。

    [3.0] 常见的数据库设计、SQL优化方法。

    [3.0] Memcache/Redis熟练使用一种,描述常用API。

    [3.5] Memcache一致性Hash算法与应用细节/Redis持久化、运维层相关事宜。

    三、必备基础理论

    HTTP协议

    [2.5] HTTP常见的请求类型及get、post间的区别。(说GET是明文,post不是明文的一律打到2.5)。

    http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html

    [2.5] HTTP常见的Header字段。

    [3.0] HTTP协议中缓存控制策略。

    http://www.cnblogs.com/520yang/articles/4807408.html

    [3.5] 非常了解HTTPS的逻辑。

    [3.5] https only等安全问题。

    [3.5] 了解HTTP2.0。

    正则表达式

    [2.5] 加号、问号、点、中括号等基本用途。

    [3.0] 一些复杂的匹配以及匹配效率。

    其他

    [3.0] UTF编码与GBK的区别。

    [3.5] Socket编程基本知识。

    [3.5] Linux常见的系统调用。

    关于面试评估表

    上面的技术分数大家要谨慎填写。

    [1分] 技术不合格。

    [2分] 不能胜任对应岗位。

    [2.5分] 及格,基本能胜任岗位。

    [3分]中等偏上,完全胜任岗位。

    [3.5分]优秀,中高级,需要让总监级别复试。

    [4 分]卓越,高级,完美符合岗位要求,需要让总监级别复试。

    [5分]完美,貌似只有理论的可能性。

  • 相关阅读:
    PS学习之餐饮行业修图
    python的IDE选择
    python简介与安装
    selenium不能启动firefox浏览器,怎么办?
    selenium定位元素(python)
    如何解决Selenium IDE与Firefox的不兼容问题?
    手工测试的关注点之用户管理
    《Google 测试之道》有感(一)
    LR性能测试衡量指标
    LR集合点与事务
  • 原文地址:https://www.cnblogs.com/liuqun/p/14076644.html
Copyright © 2020-2023  润新知