php面试部分(二)
来源:互联网 发布:淘宝卖家服务市场 编辑:程序博客网 时间:2024/05/01 22:52
面试告一段落,其中用到的技术问题
总结一下:
1.如何从百万条数据中查找126.com/136.com等网易用户邮箱账号
(1)最原始 也是最笨拙暴力的方式
select * from user
where email like '%@126.com' or
email like '%@163.com'
(2)第二种正则匹配 可能比起上面一种方式要稍微
快一点,但是也是相当的笨拙。
select * from user
where email regexp '@126.com$|@163.com$'
(3)第三种,我们需要更改表结构
在存储的时候,我们分成两张表,一张存放
用户信息,在email字段只填写 @ 符号前面的字符,
并追加一个邮箱后缀id 作为邮箱后缀的分类外键。
另一张则专门用来填写@ 后面的内容,对应一个id
这样我们在查询的时候,只要查邮箱的后缀id对应
的邮箱后缀为126.com和163.com的就可以了,这样
查询的速度最快。
2. ajax如何实现跨域请求?
我们知道ajax只能在同域下进行请求,跨域是不可以的。
我没有仔细研究,这是找到的例子,可以参考一下:
基于H5的postMessage方法实现js跨域
http://wangdf-jee.iteye.com/blog/1404272
基于H5的跨域共享特性
http://www.php1.cn/article/8354.html
http://blog.sina.com.cn/s/blog_6d425e1a01019xb0.html
3.如何判断用户已经登录/或者用户登陆后,浏览器关闭时,怎么
知道用户已经关闭浏览器
PHP中判断浏览器关闭可以使用 connection_aborted() 函数
connection_aborted() 函数检查是否断开客户机。
如果已终止连接,则该函返回 1,否则返回 0。
例子
创建一个函数,在客户机终止脚本时写入一条日志消息:
<?php
function check_abort()
{
if (connection_aborted())
error_log ("Script $GLOBALS[SCRIPT_NAME]" . "$GLOBALS[SERVER_NAME] was aborted by the user.");
}
//要执行的一些代码
// 在脚本结束时调用 check_abort 函数
register_shutdown_function("check_abort");
?>
再有一个是connection_status() 函数
connection_status() 函数返回当前的连接状态。
可返回的可能值:
0 - CONNECTION_NORMAL - 连接运行正常
1 - CONNECTION_ABORTED - 连接由用户或网络错误终止
2 - CONNECTION_TIMEOUT - 连接超时
总结一下:
1.如何从百万条数据中查找126.com/136.com等网易用户邮箱账号
(1)最原始 也是最笨拙暴力的方式
select * from user
where email like '%@126.com' or
email like '%@163.com'
(2)第二种正则匹配 可能比起上面一种方式要稍微
快一点,但是也是相当的笨拙。
select * from user
where email regexp '@126.com$|@163.com$'
(3)第三种,我们需要更改表结构
在存储的时候,我们分成两张表,一张存放
用户信息,在email字段只填写 @ 符号前面的字符,
并追加一个邮箱后缀id 作为邮箱后缀的分类外键。
另一张则专门用来填写@ 后面的内容,对应一个id
这样我们在查询的时候,只要查邮箱的后缀id对应
的邮箱后缀为126.com和163.com的就可以了,这样
查询的速度最快。
2. ajax如何实现跨域请求?
我们知道ajax只能在同域下进行请求,跨域是不可以的。
我没有仔细研究,这是找到的例子,可以参考一下:
基于H5的postMessage方法实现js跨域
http://wangdf-jee.iteye.com/blog/1404272
基于H5的跨域共享特性
http://www.php1.cn/article/8354.html
http://blog.sina.com.cn/s/blog_6d425e1a01019xb0.html
3.如何判断用户已经登录/或者用户登陆后,浏览器关闭时,怎么
知道用户已经关闭浏览器
PHP中判断浏览器关闭可以使用 connection_aborted() 函数
connection_aborted() 函数检查是否断开客户机。
如果已终止连接,则该函返回 1,否则返回 0。
例子
创建一个函数,在客户机终止脚本时写入一条日志消息:
<?php
function check_abort()
{
if (connection_aborted())
error_log ("Script $GLOBALS[SCRIPT_NAME]" . "$GLOBALS[SERVER_NAME] was aborted by the user.");
}
//要执行的一些代码
// 在脚本结束时调用 check_abort 函数
register_shutdown_function("check_abort");
?>
再有一个是connection_status() 函数
connection_status() 函数返回当前的连接状态。
可返回的可能值:
0 - CONNECTION_NORMAL - 连接运行正常
1 - CONNECTION_ABORTED - 连接由用户或网络错误终止
2 - CONNECTION_TIMEOUT - 连接超时
3 - CONNECTION_ABORTED & CONNECTION_TIMEOUT
每天进步一点点,从个好菜鸟。。。
0 0
- php面试部分(二)
- php面试(笔试部分)
- php面试部分(一)
- php面试试题二
- PHP面试(二)
- PHP面试(二)
- [Java面试二]Java基础知识精华部分.
- [Java面试二]Java基础知识精华部分.
- [Java面试二]Java基础知识精华部分.
- [Java面试二]Java基础知识精华部分
- php面试分享(二)
- php项目笔记(二)php部分
- 从大神那里找来的php面试 ----数据库部分
- 师兄面试总结编程部分解答之二
- Java面试之路(二)数据库部分
- 【面试】php面试题之五——PHP综合应用(高级部分)
- PHP常见面试题(简答部分二)
- iOS+PHP 注册登录系统(二) iOS部分
- op 整流 不适用虚短 一例 分析
- 【工作流前进之路】Activiti第一步:介绍+实例
- 黑马程序员_毕向东_Java基础视频教程第06天
- qt使用ffmpeg显示rtsp视频流
- Thingking in Java学习笔记 wait() notifyAll()
- php面试部分(二)
- 黑马程序员——Android程序运行过程
- 关键字:android,android开发,下划线,中划线
- Leetcode26-Remove Duplicates from Sorted Array
- Fields属性查询
- Cygwin NDK 安装配置详解
- HashMap源码解析
- 读懂卷积神经网络CNN
- 九九乘法表