资讯专栏INFORMATION COLUMN

八年phper的高级工程师面试之路

韩冰 / 3240人阅读

摘要:它们的用处都是用来能让数据正常插入到数据库中,并防止注入,但是并不能做到防止注入。进来抽奖的用户使用原子加锁,实现抽奖次数自增,当抽奖次数到达时,返回不中奖。

转载于:https://zhuanlan.zhihu.com/p/...
答案并非标准,是作者经验之谈,仅供参考

mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处?

mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接)

两者都是对数据库插入数据进行转义,但是mysql_real_escape_string转义时,会考虑数据库连接的字符集。

它们的用处都是用来能让数据正常插入到数据库中,并防止sql注入,但是并不能做到100%防止sql注入。

为什么上述函数仍然无法100%防止SQL注入

因为客户端编码以及服务器端编码不同,可能产生注入问题,但是其实这种场景不多见。

PHP的连接组件mysql为什么被弃用?

被弃用的原因是官方不再建议使用mysql_xx的数据库操作方式,建议使用pdo和mysqli,因为不管从性能跟安全来看,mysqli都比mysql要好。

PHP的连接组件MySQLi 为什么比 MySQL好 什么是内存泄漏,js内存泄漏是怎么产生的?

产生泄漏的原因有好几种:

(1) 页面元素被删除,但是绑定在该元素上的事件未被删除;

(2) 闭包维持函数内局部变量(外部不可控),使其得不到释放;

(3) 意外的全局变量;

(4) 引用被删除,但是引用内的引用,还存在内存中。

从上述原因上看,内存泄漏产生的根本原因是引用无法正确回收,值类型并不能引发内存泄漏。

对于每个引用,都有自己的引用计数,当引用计数归零或被标记清除时,js垃圾回收器会认为该引用可以回收了。

什么是闭包,跟原型链、作用域链有什么关联 一台电脑配置无限好,可以同时打开多少个网页

65535 - 1024 = 64511 个

ip地址能被伪造吗?

http头部可以被篡改,但是只能修改X_FORWARDED_FOR,真实ip地址(REMOTE_ADDR)很难修改(除非是路由器去修改),因为真实ip是底层会话ip地址,而且因为TCP 3次握手的存在,连接无法建立,伪造的意义不大,至于UDP的话,一般是内网才使用UDP通信。

有100万个奖品,每个人可以中奖3次,先到先得,怎么控制并发,不能发超,并保证完全的先到先得模式

百万奖品在打乱后预先insert到数据库,所有中奖操作,均只能update,不能insert。进来抽奖的用户使用memcahe原子加锁,实现抽奖次数自增,当抽奖次数到达3时,返回不中奖。

预先插入需要很多资源,如果奖品数量上了1亿怎么办? 内存比较宝贵,在不用内存加锁的情况下怎么办,并且如果碰到1亿奖池的情况,预先插入数据库肯定不好,怎么办?

设置奖品概率,分三张表,都使用innodb引擎,一张存中奖记录(预先插入一行),一张存奖品发放概况,一张存用户抽奖情况(uin唯一索引),大并发情况下,利用mysql的排他锁进行并发控制。流程如下:

begin

查询用户抽奖次数,加排他锁

对用户抽奖次数的更新/插入

锁行查询发放情况

获得抽奖结果(某些奖品发完之后,动态变更概率)

更新发放表

插入中奖记录

commit

遇到脏读怎么办? innodb的master线程在什么情况下fork其他子线程? 数据链路层的数据是怎么校验的,有哪些校验方式?

CRC32

b+树的查询时间复杂度是多少,哈希表是多少,为什么数据库索引用b+树存储,而不是哈希表,数据库索引存储还有其他数据结构吗?

O(log(n)),O(1)

因为哈希表是散列的,在遇到key>"12"这种查找条件时,不起作用,并且空间复杂度较高。

b+数根据层数决定时间复杂度,数据量多的情况下一般4-5层,然后用二分法查找页中的数据,时间复杂度远小于log(n)。

apache是怎么跟php通讯的,sapi是什么

使用sapi通讯,sapi是php封装的对外数据传递接口,通常有cgi/fastcgi/cli/apache2handler四种运行模式。

php的垃圾回收机制?

垃圾回收是指当php运行状态结束时,比如遇到了exit/die/致命错误/脚本运行结束时,php需要回收运行过程中创建的变量、资源的内存。

ZEND引擎维护了一个栈zval,每个创建的变量和资源都会压入这个栈中,每个压入的数组结构都类似:[refcount => int, is_ref => 0|1, value => union, type => string],变量被unset时,ref_count如果变成0,则被回收。

当遇到变量循环引用自身时,使用同步回收算法回收。

jquery的sizzle引擎工作原理

http://www.cnblogs.com/xesam/...

seajs的工作原理,如何解决重复加载库的问题,如何进行资源的同步加载

建立映射关系并缓存起来;资源并不能真正同步加载,只是返回一个回调。

memcache跟redis的区别 md5逆向原理

先用彩虹字典查找,再尝试暴力破解。

父类方法是protected,子类重构为private,会发生什么?

会发生fatal错误,因为继承的方法或属性只能维持或放大权限,不能缩小,比如protected重载为public是可行的。

一个网页从输入地址回车,到完整展示网页内容这段时间里,做了哪些工作,越详细越好。

0、浏览器本地缓存匹配;

1、本地hosts映射对比;

2、本地dns缓存解析;

3、远程dns解析获得服务器ip地址;

4、浏览器发送tcp连接请求包(syn);

5、请求包经过传输层、网络层、数据链路层封装通过网卡到达路由器;

6、路由器转发数据包到所属运营商服务器;

7、运营商服务器通过寻址最短路径通过中继节点到达指定ip地址;

8、服务器端可能存在反向代理或者负载均衡,都是直接转发请求至上游服务器,当然也可以制定安全防御规则直接丢弃请求包;

9、上游服务器收到连接请求,在自身可用的情况下,返回(syn+ack);

10、浏览器校验ack,再次发送(syn+ack);

11、服务器校验ack切换连接状态至established,然后根据请求传输数据包;

12、当transform-encoding为chunked时,浏览器开始渲染页面;

13、四次挥手,连接关闭;

14、渲染数据完成。

keep-alive的概念

长连接机制,表示keep-alive-timeout时间内,如果连接没有closed,再次传输数据不再需要三次握手了。

linux文件压缩操作命令,shell脚本等 设计一个中继服务器,转发客户A->客户B的请求 myisam跟innodb有什么区别 php进程死锁产生的原因是什么?怎么自动排查与自动恢复? 有class A { public function b($a, $b, $c){}}; 怎么使用["b" => 2, "a" => 1, "c" => 3],对进行A::b进行调用,并顺利赋值? php5.2->php7.1的各版本演进历史,新增特性等? 画一个tcp三次握手图

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23138.html

相关文章

  • PHPer面试指南-前言

    摘要:先说一下面试时的心态,刚入门的程序员,技术实力不高,又大多不善言谈,面试一旦遇到难题,很容易心态失衡惊慌失措语无伦次,最终丢掉了。其实大可不必,心态坦然,是面试必备的一点。 本书的 GitHub 地址:https://github.com/todayqq/PH... 作为一位程序员,面试过多次,也面试过很多人,最近又在找工作,总结一下面试经验和面试题,希望可以帮到正在找工作的小伙伴们...

    includecmath 评论0 收藏0
  • PHPer面试指南-Web 篇

    摘要:扩展阅读收集的前端面试题和答案前端开发面试题史上最全的前端面试题汇总及答案前端工程师手册协议工作原理协议运行机制的概述 本书的 GitHub 地址:https://github.com/todayqq/PH... 对于大公司,很少会有全栈工程师这个岗位,全栈是个花哨的词,对于现在比较热门的技术,不论是 Vue 还是 Laravel,只要智商不差,看着文档,都能写出一个 CURD 来,...

    cnio 评论0 收藏0
  • PHPer 面试指南-扩展阅读资源整理

    摘要:前端篇收集的前端面试题和答案前端开发面试题史上最全的前端面试题汇总及答案前端工程师手册协议工作原理协议运行机制的概述协议篇原理原理解析的工作原理与的区别理解后端篇年的面试总结垃圾回收机制面向对象设计浅谈说清楚是什么和的区别索引原理及慢查 前端篇 收集的前端面试题和答案 前端开发面试题 史上最全的web前端面试题汇总及答案 前端工程师手册 HTTP协议:工作原理 SSL/TLS协议运行...

    wemall 评论0 收藏0
  • PHPer面试指南-程序员如何写好一份简历?

    摘要:本书的地址程序员的简历在求职的时候,尤为重要,简历就是销售自己的明信片,一份优秀的简历,能为你带来更多的面试机会。扩展阅读程序员简历应该怎么写面试时,如何向公司提问 本书的 GitHub 地址:https://github.com/todayqq/PH...程序员的简历在求职的时候,尤为重要,简历就是销售自己的明信片,一份优秀的简历,能为你带来更多的面试机会。 我自己写了不少了简历,...

    tabalt 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<