首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  PHP

3 年 PHPer 的面试总结

  •  
  •   jsyzchen · 2017-09-11 09:13:58 +08:00 · 6476 次点击
    这是一个创建于 815 天前的主题,其中的信息可能已经有所发展或是发生改变。
    3 年 PHPer 的面试总结,都是大厂的面试题,值得收藏。
    原文链接: http://coffeephp.com/articles/4?utm_source=v2ex
    64 回复  |  直到 2017-11-07 09:38:56 +08:00
        1
    xman99   2017-09-11 09:16:18 +08:00
    感谢分享
        2
    wintercoder   2017-09-11 09:27:35 +08:00 via Android
    除了多了一些很细致的语言问题,好像跟校招没什么区别?
        3
    goodspb   2017-09-11 09:41:50 +08:00 via iPhone
    Mark
        4
    mentalidade   2017-09-11 09:41:51 +08:00 via Android
    好文章
        5
    Xrong   2017-09-11 09:56:39 +08:00
    给楼主点个赞,很棒。。。
        6
    throns   2017-09-11 09:57:56 +08:00 via Android
    感谢楼主 很有用
        7
    vardump   2017-09-11 10:02:18 +08:00
    实话实说,三年的经验这点东西还是太浅了。推广你网站是真的,新机 boy~~
        8
    ss098   2017-09-11 10:03:47 +08:00
    里面的 MySIAM -> MyISAM。
        9
    enenaaa   2017-09-11 10:18:25 +08:00
    已经不敢面试了。现在写代码都是边查边写。 好多 api, 语法用过即忘。
        10
    solgh   2017-09-11 10:19:40 +08:00
    感谢分享
        11
    g8287694   2017-09-11 10:20:46 +08:00
    @enenaaa +1 没文档很难做事了
        12
    lelouchyang   2017-09-11 10:22:35 +08:00   ♥ 1
    一看到 get 比 post 安全 就不想看下去了。。。
        13
    azh7138m   2017-09-11 10:29:21 +08:00 via Android
    @vardump 前端表示也能懂个一半,感觉只写了基础的部分啊
        14
    colincat   2017-09-11 10:30:40 +08:00
    感觉真心和 Java 有差距,你这文章里面那个秒杀系统真心扛不住并发
        15
    throns   2017-09-11 10:35:56 +08:00 via Android
    @lelouchyang 他写了更不安全
        16
    johnlui   2017-09-11 10:41:19 +08:00
    @throns 两者安全性完全一致
        17
    nullen   2017-09-11 10:45:21 +08:00   ♥ 1
    @jsyzchen
    21.请设计一个实现方式,可以给某个 ip 找到对应的省和市,要求效率竟可能的高。
    这个用二分查找。
        18
    FORyou2017   2017-09-11 11:15:05 +08:00
    有用!
        19
    kltt22   2017-09-11 11:17:57 +08:00
    @lelouchyang 说反了?文中不是说 get 不适合传递私密数据?
        20
    ylsc633   2017-09-11 11:27:54 +08:00
    好东西..
    那个设计模式,我收下了..
        21
    to2false   2017-09-11 11:43:59 +08:00
    mark
        22
    Felldeadbird   2017-09-11 11:48:45 +08:00   ♥ 1
    我怎么感觉这玩意是网上抄来,然后拼凑起来的文章?
        23
    lianxiaoyi   2017-09-11 11:55:30 +08:00
    @colincat 我也这么觉得,看了前面一些算法。觉得一般,但是看到秒杀这段代码,,,我这呵呵一笑了。。。。
        24
    a308057848   2017-09-11 12:17:22 +08:00
    没啥算法, 都是中规中矩的解题
        25
    jsyzchen   2017-09-11 13:04:05 +08:00
    @nullen 谢谢
        26
    jsyzchen   2017-09-11 13:08:54 +08:00
    @ss098 感谢提醒,已修改
        27
    jsyzchen   2017-09-11 13:09:47 +08:00
    @lelouchyang 没有啊,我写的是“ GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。”
        28
    jsyzchen   2017-09-11 13:10:12 +08:00
    @ylsc633 谢谢
        29
    jsyzchen   2017-09-11 13:10:29 +08:00
    @mentalidade 谢谢!
        30
    jsyzchen   2017-09-11 13:10:37 +08:00
    @Xrong 谢谢!
        31
    jsyzchen   2017-09-11 13:10:47 +08:00
    @solgh 谢谢!
        32
    jsyzchen   2017-09-11 13:12:37 +08:00
    @wintercoder 工作经验还不行,见笑了
        33
    jsyzchen   2017-09-11 13:13:53 +08:00
    @vardump 但确实是面试官问的,我只是整理了一下。确实帮自己社区推广了一下,嘿嘿。
        34
    jsyzchen   2017-09-11 13:15:08 +08:00
    @FORyou2017 谢谢!
        35
    jsyzchen   2017-09-11 13:16:48 +08:00
    @colincat 嗯嗯,只是实现了功能,想到更好的方案后会完善
        36
    jsyzchen   2017-09-11 13:18:29 +08:00
    @a308057848 确实算法都是一些常见的
        37
    AlwaysBehave   2017-09-11 13:30:39 +08:00
    COOKIE 和 SESSION 的区别和关系
    这个分类最后一条 Session 写错了
    还有我理解的话,session 的一种实现方式是 cookie,不理解所谓 session 安全性更高是怎么得出来的
        38
    sobigfish   2017-09-11 13:52:15 +08:00
    虽然是用的人家的开源代码,但 UI 也不用长那么像吧...什么都不改 ...
        39
    Lucups   2017-09-11 13:54:20 +08:00
    秒杀这个一并发可以肯定是超售的,修正一下吧。
        40
    huage   2017-09-11 14:01:29 +08:00
    很明显,作者是在做推广啊,居然还是了小尾巴 utm_source=v2ex
        41
    crazyworld825   2017-09-11 14:02:58 +08:00
    @AlwaysBehave #37 按照我对这两者的了解,Session 比 Cookie 安全是因为 Session 存在服务器中,只能由服务端程序进行相关操作,Cookie 是存放在客户端(浏览器),是明文显示的,当然也可以进行相关的 hash 和加密,但是客户端是可见,使用 js 是可以对 Cookie 进行修改、读取、删除等一系列的操作,在后端程序中,可以将 cookie 设计为 HttpOnly,这样前端就无法使用 js 对 cookie 进行读写等操作,session 和 cookie 对应一般靠后端生成的唯一的一个序列( sessionid )来对应,这样就没办法窃取 cookie 进行 session 劫持,而且一般 cookie 被窃取,也没办法修改 session 的数据,都是由后台程序根据操作自动写入的吧
        42
    killerv   2017-09-11 14:06:44 +08:00
    session 的安全性更高这个不太赞同,感觉没有什么安全性对比之说,如果这么说感觉就是对 cookie 的误解。cookie 就是传输数据给服务端的一种方式,只是在 header 里面而已。而 session 可以通过 cookie 匹配到用户 session。
        43
    jsyzchen   2017-09-11 14:15:51 +08:00
    @sobigfish 只是 UI 没改,因为我是做 PHP 的,改 UI 比较麻烦,但 PHP 代码基本都重写了,我用的是 Phalcon 框架,phphub 用的是 Laravel,过几天会开源,敬请关注。
        44
    jsyzchen   2017-09-11 14:16:57 +08:00
    @Lucups 好的,我再想想其他更好的方案
        45
    AlwaysBehave   2017-09-11 14:17:05 +08:00
    @crazyworld825 唔,没想到在验证安全上有什么好处?
    所谓说劫持,只要能拿到 cookie 就可以劫持登录状态吧,这个后台加密也是无能为力啊
    对客户端可见难道不是正常?不理解有什么问题,防 XSS 用 HTTPONLY 这个点 okey
    我还是没有看出来所谓安全在哪里,session 是为了识别用户,cookie 只是实现方式之一,类似的还有 JWT,我不认为这之间有什么可以对比的地方……
    更何况没法修改 session 的数据的话这个…… cookie 加密了也可以储存啊,但是不是不赞同这样做吗

    @killerv +1 感觉是哪里误解了
        46
    jsyzchen   2017-09-11 14:17:48 +08:00
    @huage 方便统计而已,嘿嘿。,
        47
    jugelizi   2017-09-11 14:28:36 +08:00
    @AlwaysBehave 曾见过有个开源系统登录的记住我的功能是把用户名和密码编码存在 cookie 里的.....
        48
    gouchaoer   2017-09-11 14:37:43 +08:00
    这个题目很多有问题吧,那个过滤 js 的只是过滤 script 标签本身就是错的;那个秒杀系统更扯淡,要 2 个 tcp 来回而且对单 uid 重复提交没有过滤,你就算用 redis 集群所有的请求都打到一个 redis 的 list 上能撑住么……
        49
    Xrong   2017-09-11 14:37:58 +08:00
    @huage 老哥敏感了点,23333333
        50
    usapla   2017-09-11 15:23:21 +08:00
    好东西,学习了
        51
    crazyworld825   2017-09-11 15:30:44 +08:00
    @AlwaysBehave #45 cookie 的产生是为了保持 web 浏览状态,可以存放服务器创建的信息,然后在请求的时候发送给服务器,正如#47 说的,有直接把用户名或密码等敏感信息放在 cookie 里面的,那都是客户端可见的;

    #42 说 cookie 就是传输数据给服务端的一种方式,我们开发都会被提醒,不要相信客户端传过来的数据,要在服务端进行验证,那如果本来需要保存在 cookie 的数据可以直接保存在 session 中,是不是相对安全?

    session 同时也是可以保存用户信息的,不过在服务器中;因为现在的浏览器都支持 cookie,所以一般都将 sessionid 写在 cookie 中进行身份的对应,形成了 cookie 和 session 一般成对使用的情况,在禁用 cookie 的情况下,是可以在链接后面加上相对应的 sessionid 也是可以工作的,如果分开来看,就保存数据而言,session 比 cookie 安全,这说法我觉得没问题。
        52
    wukongkong   2017-09-11 15:51:12 +08:00 via Android
    @jugelizi 应该怎么写呢
        53
    jsyzchen   2017-09-11 16:01:06 +08:00
    @gouchaoer 多谢反馈,我会及时修正
        54
    fanhan   2017-09-11 17:04:14 +08:00
    7.如何快速寻找一个数组里最小的 1000 个数
    感觉这个算法有问题,时间复杂度上比正常排序后取一千还慢
        55
    rr41ns   2017-09-11 17:59:14 +08:00
    楼主好人
        56
    jsyzchen   2017-09-11 18:09:22 +08:00
    @rr41ns 谢谢!
        57
    jsyzchen   2017-09-11 18:14:11 +08:00
    @fanhan 嗯嗯,我的那种方法时间复杂度是 O(nk),不过可以改进,可以维护容量为 k 的最大堆,那样时间复杂度就变成 O(k)了
        58
    jsyzchen   2017-09-11 18:15:42 +08:00
    @fanhan 维护容量为 k 的最大堆,时间复杂度应该为 O(logk)
        59
    a1044634486   2017-09-11 18:54:14 +08:00
    这是 php 还是运维。。我晕了
        60
    jsyzchen   2017-09-11 19:30:49 +08:00
    @a1044634486 哈哈,面试什么都问
        61
    msg7086   2017-09-12 04:16:56 +08:00
    function is_same_sign($a, $b)
    {
    if ($a * $b > 0) {
    return true;
    } else {
    return false;
    }
    }

    换我会写成 $a > 0 && $b > 0 || $a < 0 && $b < 0。

    就算用乘法,我也会写成 return $a * $b > 0; 。
        62
    jsyzchen   2017-09-12 09:41:24 +08:00
    @msg7086 确实这样更直观一些
        63
    wengang285   2017-11-06 17:13:00 +08:00
    @Lucups 超发不会,只是性能不高
        64
    Lucups   2017-11-07 09:38:56 +08:00
    @wengang285 写得太复杂了,decr 就可以了,判断减 1 操作后的值是否小于 0。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1438 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 30ms · UTC 17:12 · PVG 01:12 · LAX 09:12 · JFK 12:12
    ♥ Do have faith in what you're doing.