1. 写出下列服务的用途和默认端口(新浪网技术部)php
ftp、ssh、http、telnet、https
ftp:File Transfer Protocol,文件传输协议,是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输,其默认端口是21。
ssh:Secure Shell,安全外壳协议,创建在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登陆会话和其余网络服务提供安全性的协议,其默端口是22。
http:hypertext transport protocol,超文本传送协议,是一种详细规定了浏览器和万维网服务器之间互相通讯的规则,经过因特网传送万维网文档的数据传送协议,其默认端口是80。
telnet:Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工做的能力,其默认端口是23。
https:Hypertext Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道,用于安全的HTTP数据传输,它的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性,其默认端口是443。html
2. 你用什么方法检查PHP脚本的执行效率(一般是脚本执行时间)和数据库SQL的效率(一般是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?(腾讯)前端
脚本执行时间,启用xdebug,使用WinCacheGrind分析。
数据库查询,mysql使用EXPLAIN分析查询,启用slowquerylog记录慢查询。mysql
3. 对于大流量的网站,您采用什么样的方法来解决访问量问题?web
1) 确认服务器硬件可否支持当前的流量
对于普通的pcserver来讲,它可以独立支持天天10万个独立ip访问,若是访问量过大,最好更好性能更高的专用服务器。
2) 优化数据库的访问服务器的负载过大,一个重要的缘由就是CPU和内存负载太高,而读写数据在这块占据较多的资源。能够从页面静态化、memcache缓存和mysql优化几个方面着手。
3) 禁止外部盗链占用较大的流量,防盗链,使用reference来判断一下。若是是图片的话,使用添加水印便可很好的防止。
4) 控制大文件的下载最好把文件下载的容量控制为相对较小的一个值,若是有大文件下载,最好使用专用的服务器。
5) 使用多台主机实现分流,集群
6) 使用流量分析软件进行分析统计谷歌和百度ajax
4. 请简单阐述您最得意的开发之做正则表达式
根据实际状况自由发挥算法
5. 谈谈asp,php,jsp的优缺点sql
ASP全名ActiveServerPages,是一个WEB服务器端的开发环境,利用它能够产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Javascript)做为本身的开发语言。
PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C、Java和Perl语言的语法,并结合本身的特性,使WEB开发者可以快速地写出动态生成页面。它支持目前绝大多数数据库。还有一点,PHP是彻底免费的,不用花钱,你能够从PHP官方站点自由下载。并且你能够不受限制地得到源码,甚至能够从中加进你本身须要的特点。
JSP是Sun公司推出的新一代站点开发语言,他彻底解决了目前ASP和PHP的一个通病-----脚本级执行(听说PHP4也已经在Zend的支持下,实现编译运行)。Sun公司借助本身在上的不凡造诣,将Java从Java应用程序和JavaApplet以外,又有新的硕果,就是JavaServerPage。JSP能够在Serverlet和JavaBean的支持下,完成功能强大的站点。
三者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成Servlet并由Java虚拟机解释执行,这种编译操做仅在对JSP页面的第一次请求时发生。
在ASP、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只依赖于Web服务器,而ASP、PHP、JSP页面须要附加的语言引擎分析和执行程序代码。程序代码的执行结果被从新嵌入到HTML代码中,而后一块儿发送给浏览器。
ASP、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不须要任何附加的软件支持。数据库
6. 请举例说明在你的开发过程当中用什么方法来加快页面的加载速度。
要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器,使用代码优化工具等。
7. Is PHP better than Perl? – Discuss.(Yahoo)
咱们不要为一个简单的问题引起一场舌战,为工做选择适合的语言,不要为工做迁就语言。Perl十分适合用做命令行工具,虽然它在网页应用上也有不错的表现,可是它的真正实力在命令行上才能充分发挥。一样地,PHP虽然能够在控制台的环境中使用,可是它在网页应用上有更好的表现,PHP有大量专门为网页应用而设计的函数,Perl则彷佛以命令行为设计之本。
8. What's the difference between the way PHP and Perl distinguish between arrays and hashes?(Yahoo)
这正是为什么我总是告诉别人选择适当的编程语言,若果你只用一种语言的话你怎么能回答这道问题?这道问题很简单,Perl所变量都是以@开头,例如@myArray,PHP则沿用$做为全部变量的开头,例如$myArray。
至于Perl表示散列表则用%,例如%myHash,PHP则没有分别,还是使用$,例如$myHash。
9. How do you debug a PHP application?(Yahoo)
使用Xdebug或者Advanced PHP Debugger
10. PEAR中的数据库链接字符串格式是____。
$dsn = 'mysql://username:password@localhost/test'
$options = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
)
DB::connect($dsn,$options),其中options参数是可选的。
PEAR是PHP扩展与应用库(thePHPExtensionandApplicationRepository)的缩写。它是一个PHP扩展及应用的一个代码仓库,PEAR处理数据库的模块是PEARDB。
11. 如何实现PHP、JSP交互?
题目有点含糊不清,SOAP,XML_RPC,Socketfunction,CURL均可以实现这些,若是是考虑PHP和Java的整合,PHP内置了这种机制(若是考PHP和.NET的整合,也能够这么回答)。
PHP提供了支持JAVA的类库文件,或者经过HTTP协议来交互数据。
12. apache+mysql+php实现最大负载的方法
1) 问的太笼统,生成静态html页面,squid反向代理,apache,mysql的负载均衡。
2) 能够采起数据缓存的方法,咱们一般在统计数据的时候,须要在原始数据的基础上通过计算等一系列操做,才会获得最终的结果,若是每作一个查询都须要这样一系列操做,当数据量大时,势必会带来不少问题。能够创建一个结果表,写一个脚本,用crontab定时触发脚本去原始表取数据,计算,写入到结果表,前端查询从结果表取数据,这也是比较经常使用的一种作法。
3) 采用分布式,多个apache,多个mysql,其实就是dns负载均衡,dns根据当前用户解析几个ip的ping值,将用户转移到某一台最快的服务器,或者平均分配。
4) money不是问题的话,能够考虑F5硬件负载均衡!
5) 可使用Microsoft Windows Server系统的负载均衡设置
13. 已知姓名A,姓名B,给一个求他们缘份的算法(51.com)
开放性题目,没有固定的算法,能够经过计算两个名字的笔画差来肯定缘分指数。
14. 你以为在PV10W的时候,同等配置下,LUNIX比WIN快多少?(51.com)
不作优化的状况下同样。
15. Ajax,数据库触发器,GUI,中断机制的共同思想。谈一谈该种思想(机制)(百度)
主要就是异步,主进程不会被一个异步任务阻塞,当进程发出命令以后,继续执行主任务,不用等待子任务执行完,这样效率更高。
数据库触发器和中断机制是数据库自动完成的,而ajax触发器是用户激发的。ajax把GUI和数据库异步优化。
16. 把一篇英文文档中全部单词的首字母转为大写,文档存在doc.txt中。能够在多种编程语言中选择(C\C++,JAVA,PHP...)写出你的思路,尽可能优化你的程序。(百度)
$str = file_get_contents('doc.txt');
$str = ucwords($str);
file_put_contents('doc.txt',$str);
17. 防止SQL注射漏洞通常用_____函数
addslashes
18. 综合运用,PHP+MySQL编程,文件操做(CBSI)如下请用PHPMYADMIN完成
(1).建立新闻发布系统,表名为message有以下字段
id 文章 id
title 文章标题
content 文章内容
category_id 文章分类 id
hits 点击量
建立表语句以下:
CREATE TABL Emessage ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(200) NOT NULL DEFAULT '', content TEXT, category_id INT UNSIGNED NOT NULL DEFAULT 0, hits INT UNSIGNED NOT NULL DEFAULT 0 )engine=InnoDB default charset=utf8
(2).一样上述新闻发布系统:表comment记录用户回复内容,字段以下
comment_id 回复id
id文章id,关联message表中的id
comment_content 回复内容
现经过查询数据库须要获得如下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,若是文章没有回复则回复数量显示为0
SELECT message.id AS id,title,hits,IF(comment.idisNULL,0,count(*)) AS number FROM message LEFT JOIN comment ON message.id=comment.id GROUPBY message.id
(3).上述内容管理系统,表category保存分类信息,字段以下
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用户输入文章时,经过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单
function categoryList() { $result = mysql_query("select category_id,category_name from category") or die("Invalidquery:".mysql_error()); echo"<selectname='category'value=''>"; while ($row = mysql_fetch_array($result)) { echo"<optionvalue='".$row['category_id']."'>".$row['category_name']."</option>"; } echo"</select>"; }
文件操做部分:上述内容管理系统,用户提交内容后,系统生成静态HTML页面,写出实现的基本思路。
要生成静态HTML页面,须要使用输出缓冲output buffering及文件操做,首先使用ob_start()函数开启输出缓冲,在页面内容执行完成时,使用ob_get_contents()函数获取保存在输出缓冲区中的内容,而后使用file_put_contents()函数,生成静态HTML页面便可。
19. 请问cgi和fastcgi有什么不一样,你在什么状况下会选择哪一个?(酷讯)
原理同样,都是利用标准输入输出流处理HTTP之类的文本协议,都是经过多进程模式处理多请求。不一样之处在于FastCGI的一个进程处理完一个请求以后重置状态并挂起,待下一个请求来时继续处理;而CGI的一个进程则处理完一个请求后退出,下一个请求来时再建立新进程。
20. zend optimizer是什么?(酷讯)
Zend Optimizer 能够加速PHP脚本的执行,提升PHP应用程序的执行速度。实现的原理是对那些程序在被最终执行以前由运行编译器(Run-TimeCompiler)产生的代码进行优化。
通常状况下,执行使用ZendOptimizer的PHP程序比不使用的要快40%到100%。这意味着网站的访问者能够更快的浏览网页,从而完成更多的事务,创造更好的客户满意度。
ZendOptimizer还能够给用Zend加密的文件解密。
21. 列举web开发中的安全性问题
sql注入攻击。
数据库操做安全,UPDATE、DELETE、INSERT的操做没有限制用户操做权限,这将是一件很危险的事情。
没有验证用户http请求的方式POST或者GET,GET请求被合法经过。
没有验证表单来源的惟一性,不能识别是合法的表单提交仍是黑客伪造的表单提交。
XSS攻击。
22. 如何经过php程序防止外部页面提交表单?编写一段代码
<?php session_start(); if (isset($_POST['name']) && !empty($_POST['name'])) { if ($_POST['check'] == $_SESSION['check']) { echo'正常访问'; } else { echo'外部访问'; } } $token = md5(uniqid(rand(),true)); $_SESSION['check'] = $token; ?> <form method="post" action=""> <input type="text" name="name"> <input type="hidden" name="check" value="<?php echo $token;?>"> <input type="submit"> </form>
23. 若是某段与数据库交互的程序运行较慢你将如何处理?
一是首先提升数据库的查询速度,好比增长索引,优化表的结构。
二是优化程序代码,若是查询比较多,能够尽可能用条件查询,减小查询语句,好比能用一条查询语句就不用两条。
三就是提升服务器的速度,优化服务器,把没必要要的进程关掉。
24. 如下代码会产生什么问题,如何解决?
<?php
$dir=$_POST['dir'];
include("/usr/local/apache/htdoc/inc/$dir");
?>
不安全,必须对用户的输入进行验证和过滤。
25. 请简述操做系统的线程与进程的区别。列举LINUX下面你使用过的软件?
进程是具备必定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
进程和线程的主要差异在于它们是不一样的操做系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不一样执行路径。线程有本身的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,因此多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行而且又要共享某些变量的并发操做,只能用线程,不能用进程。
Linux下经常使用软件,vim,emacs,tar,openoffice,putty,wget,links,ssh等。
26. 用户在网站表单提交数据的时候,为了防止脚本攻击(好比用户输入<script>alert(111);</script>),php端接收数据的时候,应该如何处理?
能够对用户输入数据进行转义,如htmlspecialchars($_POST['title']);
27. 使用过Memcache缓存吗,若是使用过,可以简单的描述一下它的工做原理吗?
Memcahce是把全部的数据保存在内存当中,采用hash表的方式,每条数据由key和value组成,每一个key是独一无二的,当要访问某个值的时候先按照找到值,而后返回结果。Memcahce采用LRU算法来逐渐把过时数据清除掉。
28. 一个Web开发团队开发中,大体说说你所了解的全部成员的分工合做状况
每一个公司的分工合做状况各不相同,通常会有策划,美工,前端开发,后台开发,维护,优化和推广等。
29. 假设给你5台服务器,请大体的描述一下,如何使用你所熟悉的开源软件,搭建一个日PV300万左右的中型网站?
参考结构:
3台Web服务器,两台MySQL数据库服务器,采用Master/Slave同步的方式减轻数据库负载,Web服务器能够结合Memcache缓存来减小负载,同时三台Web服务器内容一致,能够采用DNS轮询的方式来进行负载平衡。
30. 谈谈对你PHP认识或你擅长的技术?
自由发挥
31. 什么是Ajax?Ajax的原理是什么?Ajax的核心技术是什么?
Ajax的优缺点是什么?Ajax是Asynchronous JavaScript and XML的缩写,是JavaScript、XML、CSS、DOM等多个技术的组合。
Ajax的工做原理是一个页面的指定位置能够加载另外一个页面全部的输出内容,这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。因此Ajax技术实现了一个静态网页在不刷新整个页面的状况下与服务器通讯,减小了用户等待时间,同时也从而下降了网络流量,加强了客户体验的友好程度。
Ajax的核心技术是XMLHttpRequest,它是JavaScript中的一个对象。Ajax的优势是:
(1).减轻了服务器端负担,将一部分之前由服务器负担的工做转移到客户端执行,利用客户端闲置的资源进行处理;
(2).在只局部刷新的状况下更新页面,增长了页面反应速度,使用户体验更友好。
Ajax的缺点是不利于SEO推广优化,由于搜索引擎没法直接访问到Ajax请求的内容。
32. 请用PHP实现一个函数,将一个2进制数的无符号非负电位字符串非浮点字符串转成一个10进制数,返回该10进制数。不准使用BIN等系统内置函数(嘀嗒团)
题目意思有些模糊,题目本意多是将一个无符号的2进制字符串转成10进制数,如'10100010',应该获得10100010的十进制表示162。
function bin2dec($bin) { $temp = strrev($bin); $result = 0; for ($i = 0, $len = strlen($temp); $i < $len; $i++) { $result += pow(2, $i) * $temp[$i]; } return $result; } $a = '10100010'; echo bin2dec($a); // 162
33. 请使用PHP设计一个函数,对学生英语考试得分从高到低排序,输入时全部学生的学号和考试得分,返回排好序的考试得分和对应学生的学号。考试满分为100,得分可能会有小数,因为考试评分要求,小数位只会是0或0.5
要求:
请不要使用qsort等系统内置排序函数
请使用你认为最快最优的方法实现该函数并使排序的性能最高。(嘀嗒团)
// 快速排序实现 function array_sort(&$arr, $left, $right) { if ($left < $right) { $pivot = $arr[$left]; $low = $left; $high = $right; while ($low < $high) { while ($low < $high && $arr[$high]['score'] >= $pivot['score']) { $high--; } $arr[$low] = $arr[$high]; while ($low < $high && $arr[$low]['score'] <= $pivot['score']) { $low++; } $arr[$high] = $arr[$low]; } $arr[$low] = $pivot; array_sort($arr, $left, $low - 1); array_sort($arr, $low + 1, $right); } } $english = array( array('sid'=>1, 'score'=>76), array('sid'=>2, 'score'=>93), array('sid'=>3, 'score'=>68.5), array('sid'=>4, 'score'=>82.5) ); $left = 0; $right = count($english) - 1; array_sort($english, $left, $right); print_r($english);
34. 须要设置一个有效期为31天,的memcach值,请补充下面的代码(奇矩互动)
<?php
$memcache_obj=new memcache
$memcache_obj->connect('memcache_host,11211');
$memcache_obj->set('varKey','varValue',0,____);
?>
time()+3600*24*31
35. 你从_____时候开启接触PHPHPP的?从能够写出连接mysql数据库查询更改数据到如今大约有____时间?(奇矩互动)
根据自身状况填写
36. 如今请你设计一个留言板系统,请简要的写出你设计的其中分页算法的思路。(奇矩互动)
主要是数据库的设计系统的架构思想
分页算法的原理是limit offset,pagesize
其中,pagesize是设定好的,而offset则要经过计算获得,不一样的页数对应的offset也不一样,设当前页为currentpage,则offset=(currentpage-1)*pagesize。
37. 假设有"123<em>abc</em>456<em>def</em>789"这么一个字符串,写一个函数,能够传入一个字符串,和一个要截取的长度。返回截取后的结果。(小米)
要求:
(1).<em>和</em>标记不得计算在长度以内。
(2).截取后的字符串,要保留原有<em>标签,不过若是最后有一个标签没有闭合,则去掉其开始标签。
示例:题中的字符串,要截取长度5,则返回的字符串应该为123ab,要截取长度8,应返回123<em>abc</em>45。
参考代码:
function cut($str,$len=null) { $last = 0; $str_len = strlen($str); $result = ''; $result_len = 0; do{ $pattern = '/<em>(.*?)<\/em>/i'; $num = preg_match($pattern,$str,$m,PREG_OFFSET_CAPTURE,$last); if ($num) { $result .= substr($str,$last,$add_len = ($m[0][1]-$last < $len-$result_len) ? $m[0][1]-$last : $len-$result_len); $result_len += $add_len; $last = $m[0][1]+strlen($m[0][0]); if ($result_len<$len) { if ($len-$result_len >= strlen($m[1][0])) { $result.=$m[0][0]; $result_len+=strlen($m[1][0]); } else { $result .= substr($m[1][0],0,$len-$result_len); break; } } } else { $result .= substr($str,$last,$len-$result_len); break; } } while ($last < $str_len && $result_len < $len); return $result; }
38. 请仅使用一次正则替换,将下面内容
private long contract_id;
private string contract_number;
private string customer_name;
替换为
private long contractId;
private string contractNumber;
private string customerName;
(鑫众人云)
$str = "private long contract_id; private string contract_number; private string customer_name;"; $pattern = '/_(\w)/em'; $result = preg_replace($pattern, "strtoupper('\\1')", $str); echo $result;
39. 列举流行的AjaAjaxx框架?说明AjaAjaxx实现原理是什么及jsojsonn在AjaAjaxx中起什么做用?(鑫众人云)
流行的Ajax框架有jQuery,Prototype,Dojo,MooTools。
Ajax的工做原理是一个页面的指定位置能够加载另外一个页面全部的输出内容,这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。因此Ajax技术实现了一个静态网页在不刷新整个页面的状况下与服务器通讯,减小了用户等待时间,同时也从而下降了网络流量,加强了客户体验的友好程度。
在使用Ajax时,涉及到数据传输,即将数据从服务器返回到客户端,服务器端和客户端分别使用不一样的脚步语言来处理数据,这就须要一种通用的数据格式,XML和json就是最经常使用的两种,而json比XML更简单。
40. 在UNIX或windows系统内以()为单位分配资源以()单位分配时间调度(亿邮)
进程,时间片
41. 正则表达式中*?+的做用分别是什么(亿邮)
*?+都有用来匹配数量的,*表示0或多个,?表示0个或1个,+表示1个或多个。
42. 写出你所知道的XML解析器(亿邮)
DOM,SAX,SimpleXML,其中前两种是通用的解析器,和具体语言无关,而SimpleXML则是PHP提供的解析器。
43. 在程序中表示时间可使用哪几种变量类型(亿邮)
在PHP中可使用int或字符串来表示(php中没有日期时间类型),在MySQL中,可使用int,date,datetime,timestamp。
44. 使用Utf-8编码存储中文姓名,通常会分配多少个字节的存储空间(亿邮)
UTF-8编码是可变长编码,对于中文而言,一个字符使用3个字节来存储。
45. 用正则表达式判断$a是不是一个以半角逗号分隔的多个手机号码组成的字符串,是输出yes(卓望)
$pattern = '/^1[358]\d{9}(,1[358]\d{9})*$/'; $subject = '13507224985,13833103237'; if (preg_match($pattern, $subject)) { echo 'yes'; }
46. 若是要求每隔5分钟执行一次脚本five.php,如何实现?(卓望)
用到的函数ignore_user_abort(),set_time_limit(0),sleep($interval),此代码只要运行一次后关闭浏览器便可。
ignore_user_abort(); // 关掉浏览器,PHP脚本也能够继续执行. set_time_limit(0); // 经过set_time_limit(0)可让程序无限制的执行下去 $interval = 60*5; // 每隔5分钟运行 do{ //这里是你要执行的代码 sleep($interval);//等待5分钟 }while(true);
47. 假设有一个博客系统,数据库存储采用mysql,用户数量为1000万,预计文章总数为10亿,天天有至少10万的更新量,天天访问量为5000万,对数据库的读写操做的比例超过10:1,你如何设计该系统,以确保其系统高效,稳定的运行?提示:能够从数据库设计,系统框架,及网络架构方面进行描述,能够自由发挥(新浪网技术部)
相关题目:咱们但愿开发一个门户系统,数据存储采用MySQL,用户数量为1000万,预计文章总数为10亿,日更新量至少为10万,日访问量为5000万,对数据库的读写操做比例超过10:1,你如何设计该系统,以确保其高效,稳定的运行?(提示:能够从数据库设计,系统框架及网络架构方面进行描述,自由发挥)(鑫众人云)
项目设计:假设有一个包含Tag功能的博客系统,数据库存储采用mysql,用户数量为1000万,预计文章总数为10亿,天天有至少10万的更新量,天天访问量为5000万,对数据库的读写操做的比例超过10:1。你如何设计该系统,以确保其系统高效,稳定的运行?
提示:能够从数据库设计,系统框架,及网络架构方面进行描述,能够写代码/伪代码辅助说明,能够自由发挥(小米)