1. mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处,为什么被弃用?
答:
(1)mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接)
(2)两者都是对数据库插入数据进行转义,但是mysql_real_escape_string转义时,会考虑数据库连接的字符集
(3)被弃用的原因是官方不再建议使用mysql_xx的数据库操作方式,建议使用pdo和mysqli(连接复用(持久化)),因为不管从性能跟安全来看,mysqli都比mysql要好
(4)它们的用处都是用来能让数据正常插入到数据库中,并防止sql注入,但是并不能做到100%防止sql注入
2. 再问:为什么不能100%防止?
答:
(1)因为客户端编码以及服务器端编码不同,可能产生注入问题,但是其实这种场景不多见。
3.什么是内存泄漏,js内存泄漏是怎么产生的?
答:
(1)内存泄漏是因为一块被分配内存既不能被使用,也不能被回收,直到浏览器进程结束
(2)页面元素被删除,但是绑定在该元素上的事件未被删除
(3)闭包维持函数内局部变量(外部不可控),使其得不到释放
(4)意外的全局变量
(5) 引用被删除,但是引用内的引用,还存在内存中
4.什么是闭包,跟原型链、作用域链有什么关联
答:
5.一台电脑配置无限好,可以同时打开多少个网页
答:
65535-1000 = 64535(端口数)
6.ip地址能被伪造吗
答:
http头部可以被篡改,但是只能修改X_FORWARDED_FOR,真实ip地址(REMOTE_ADDR)很难修改(除非是路由器去修改),因为真实ip是底层会话ip地址,而且因为TCP 3次握手的存在,连接无法建立,伪造的意义不大,至于UDP的话,一般是内网才使用UDP通信
7.有100万个奖品,每个人可以中奖3次,先到先得,怎么控制并发,不能发超,并保证完全的先到先得模式
8.innodb的master线程在什么情况下fork其他子线程
9.数据链路层的数据是怎么校验的,有哪些校验方式
答:crc32,别的校验可能是取模校验奇偶数吧。
10.b+树的查询时间复杂度是多少,哈希表是多少,为什么数据库索引用b+树存储,而不是哈希表,数据库索引存储还有其他数据结构吗
答:
(1).O(log(n)),O(1)
(2)因为哈希表是散列的,在遇到`key`>'12'这种查找条件时,不起作用,并且空间复杂度较高
(3)b+数根据层数决定时间复杂度,数据量多的情况下一般4-5层,然后用二分法查找页中的数据,时间复杂度远小于log(n)