jsyzchen
V2EX  ›  PHP

3 年 PHPer 的面试总结

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

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

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

session 同时也是可以保存用户信息的,不过在服务器中;因为现在的浏览器都支持 cookie,所以一般都将 sessionid 写在 cookie 中进行身份的对应,形成了 cookie 和 session 一般成对使用的情况,在禁用 cookie 的情况下,是可以在链接后面加上相对应的 sessionid 也是可以工作的,如果分开来看,就保存数据而言,session 比 cookie 安全,这说法我觉得没问题。
wukongkong
   52
wukongkong  
   2017 年 9 月 11 日 via Android
@jugelizi 应该怎么写呢
jsyzchen
   53
jsyzchen  
OP
   2017 年 9 月 11 日
@gouchaoer 多谢反馈,我会及时修正
fanhan
   54
fanhan  
   2017 年 9 月 11 日
7.如何快速寻找一个数组里最小的 1000 个数
感觉这个算法有问题,时间复杂度上比正常排序后取一千还慢
rr41ns
   55
rr41ns  
   2017 年 9 月 11 日
楼主好人
jsyzchen
   56
jsyzchen  
OP
   2017 年 9 月 11 日
@rr41ns 谢谢!
jsyzchen
   57
jsyzchen  
OP
   2017 年 9 月 11 日
@fanhan 嗯嗯,我的那种方法时间复杂度是 O(nk),不过可以改进,可以维护容量为 k 的最大堆,那样时间复杂度就变成 O(k)了
jsyzchen
   58
jsyzchen  
OP
   2017 年 9 月 11 日
@fanhan 维护容量为 k 的最大堆,时间复杂度应该为 O(logk)
a1044634486
   59
a1044634486  
   2017 年 9 月 11 日
这是 php 还是运维。。我晕了
jsyzchen
   60
jsyzchen  
OP
   2017 年 9 月 11 日
@a1044634486 哈哈,面试什么都问
msg7086
   61
msg7086  
   2017 年 9 月 12 日
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; 。
jsyzchen
   62
jsyzchen  
OP
   2017 年 9 月 12 日
@msg7086 确实这样更直观一些
wengang285
   63
wengang285  
   2017 年 11 月 6 日
@Lucups 超发不会,只是性能不高
Lucups
   64
Lucups  
   2017 年 11 月 7 日
@wengang285 写得太复杂了,decr 就可以了,判断减 1 操作后的值是否小于 0。
© 2026 V2EX · 103ms · 3.9.8.5