1、在电商的秒杀商品场景中,怎样考虑并发(1000并发)下的性能和库存量的准确性?
2、介绍下常见的SSO(单点登录)方案的原理。
有个独立的认证中心,只有认证中心能接收用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权,间接授权通过令牌实现,认证中心验证用户的用户名和密码没问题,则创建授权令牌,并发放到各个子系统,子系统拿到了令牌意味着得到了授权。
3、有一序列1,1,2,3,5,8,13,21......请识别这个序列的规律,并用递归写一个求第n位的值的函数。
4、简述Redis数据持久化方式中aof和rdb模式的区别及各自优缺点。
5、如下图:
6、比较两个字符串是否有相同字符,要求时间复杂度最低。
7、数组里面的子数组含有正数和负数,求子数组和的最大值,要求时间复杂度最低。
8、请写出HTTP头,并符合以下要求:
1)这是一个post请求
2)目标:http://www.example.com:8080/test
3)POST变量:
username: test
pwd: test2
intro: Hello world!
4)包含以下COOKIE信息:cur_query: you&me
9、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧。
要求如下:
1)/myworks/example/bbe.txt,98版本英文圣经一本
2)输入部分要求如下:php ./example.php [单词]
3)输出部分如下:[单词] 1,2 2,4 5,6 表示:此单词在1行2列(第二个单词),2行4列...
说明:
1)此文本4MB之巨...
2)单词的含义:由英文字母(大小写),数字(0-9)组成的串
3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的
4)上机考试不允许上网,但我装了man文档以及读取CHM以及PDF的阅读器,在电脑的桌面的CHM文件夹中,有相应的PHP参考手册
5)算法复杂度要求不能大于O(N^2)(就是N的平方)
10、PHP的垃圾收集机制是怎样的? 请从源码入手。
11、const和define的区别。
12、https的工作原理。
网络编程:
1、UDP调用connect有什么作用?connect会阻塞,怎么解决?(设置非阻塞,返回之后用select检测状态)
2、socket服务端的实现,什么情况下可读?
3、select和epoll的区别。epoll有哪些触发模式,有什么区别?如果select返回可读,结果只读到0字节,是什么情况?
4、大规模连接上来,并发模型怎么设计?
5、什么是滑动窗口?
6、TCP协议和UDP协议有什么区别,请画出TCP三次握手的示意图。TCP连接中,时序图,状态图?TCP头多少字节,有哪些字段?
7、多线程和多进程的区别。
cpu调度,上下文切换,数据共享,多核cpu利用率,资源占用
8、哪些东西是一个线程私有的?(寄存器)
9、keepalive是什么?如何使用?
10、命令:netstat,tcpdump,ipcs,ipcrm
系统设计
1、一个每秒百万级访问量的互联网服务器,每个访问都有数据计算和I/O操作,如果让你设计,你怎么设计?
2、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东。要求如下:
1)要求每个QQ号码(假设此QQ号码在UNIT32内可以表示)10分钟这内只能投5票。
2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。
说明:
1)无需写代码,只需要图跟文字即可。
2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。
3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。
4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分。
3、微信朋友圈如何设计?
1)大数据:微信用户有10亿,如何处理-bitmap。
2) 数据库设计,怎么设计才能达到 你发朋友圈别人能看见,屏蔽某人就看不见了。
MySQL
1、数据库如何设计?如何去优化数据库?
2、如何去建立索引?索引的原理是什么?
3、平衡树的原理是什么?为什么这样就是优化的?
4、索引的好处和坏处在哪里。
5、MySQL的InnoDB和MyISAM引擎在使用select count(*)语句时,哪个效率更高,为什么?
6、InnoDB支持行锁,那什么条件下会产生行锁,什么情况下会变成表锁?
7、表Thread(tid,uid,content,createtime),表User(uid,username,password,createtime)
100万用户,500万帖子,一条SQL语句,查出发帖数前10的用户(显示其姓名)
基础知识
input中readonly和disable的区别:
1、 disable:不可获取焦点,且不可编辑; readonly:可获取焦点,但不可编辑。
2、readonly只针对input(text/password)和textarea有效,而disable对于所有的表单元素都有效,包括select,radio,checkbox,button等。
3、表单元素在使用了disable后,但我们将表单以POST或GET的方式提交后,这个元素的值不会被传递出去,而readonly会将该值传递出去
get和post的区别:
GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
1、GET产生一个TCP数据包;POST产生两个TCP数据包:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
2、GET在浏览器回退时是无害的,而POST会再次提交请求。
3、GET产生的URL地址可以被Bookmark,而POST不可以。
4、GET请求会被浏览器主动cache,而POST不会,除非手动设置。
5、GET请求只能进行url编码,而POST支持多种编码方式。
6、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
7、对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
8、GET参数通过URL传递,不安全,所以不能用来传递敏感信息,且长度限制2KB;POST请求参数放在Request body中,较安全,无长度限制(可配置)。
echo与print,var_dump()和print_r()的区别
1.echo 和 print 的区别
共同点:echo 和 print 都不是严格意义上的函数,都是语言结构;都只能输出字符串,整型跟int型浮点型数据。不能打印复合型和资源型数据;
不同点:echo 可以连续输出多个变量,而print只能一次输出一个变量。print打印的值能直接复制给一个变量,如 $a = print “123”;
而echo 不可以,它没有像函数的行为,所以不能用于函数的上下文。在使用时,echo() 函数比 print()速度稍快。
2.var_dump()和print_r()的区别
共同点:两者都可以打印数组,对象之类的复合型变量。
不同点:print_r()在打印数组时,会将把数组的指针移到最后边,使用 reset() 可让指针回到开始处。 而var_dump()不但能打印复合类型的数据,还能打印资源类型的变量。且var_dump()输出的信息则比较详细,一般调试时用得多。