职场资讯网精选阅读
1请说明PHP中传值与传引用的区别。什么时候传值什么时候传引用?
答:传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。
2在PHP中error_reporting这个函数有什么作用?
答:Theerror_reportingfunctionsetstheerror_reportingdirectiveatruntime.PHPhasmanylevelsoferrors,usingthisfunctionsetsthatlevelfortheduration(runtime)ofyourscript.
3请用正则表达式(RegularExpression)写一个函数验证电子邮件的格式是否正确。
答:
php
if(isset($_POST['action'])
$_POST['action']==submitted)
{
$email=$_POST['email'];
if(!preg_match(/^(?:w+.?)*w+@(?:w+.?)*w+$/,$email))
{
echo
电子邮件检测失败;
}
else
{
echo
电子邮件检测成功;
}
}
else
{
?
1、用PHP打印出前一天的时间,格式是2006-5-1022:21:21
//echodate(Y-m-dH:i:s,time-60*60*24
echodate(Y:m:dH:i:s,strtotime(-1day));
?
2、echo,print,print_r的区别
echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象
3、能够使HTML和PHP分离开使用的模板
somuch,其实PHP本身就是一种模版引擎,我用过的是smarty,常见的还有PHPLib,FastTemplate,Savant这里有个模板引擎列表:http:///forums/showthread.php?t=123769
4.如何实现PHP、JSP交互?
题目有点含糊不清,SOAP,XML_RPC,Socketfunction,CURL都可以实现这些,如果是考PHP和Java的整合,PHP内置了这种机制(如果考PHP和.NET的整合,也可以这么回答),例如$foo=newJava(java.lang.System);
5.使用哪些工具进行版本控制?
CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具,呃,这个可能需要这么回答:CVSServeronApache作服务端,WinCVS作客户端;SubversiononApache/DAV做服务端,TortoiseSVN做客户端,或者Subclipse做客户端
6.如何实现字符串翻转?
其实PHP本身就有字符串翻转的函数:strrev,不妨试试echostrrev($str);不过所有的这三种方法都不能解决中文字符串翻转的问题,会出错的。
functionreverse($var)
{
$res=;
for($i=0,$j=strlen($var);$i$j;$i++)
{
$res=$var[$i].$res;
}
return$res;
}
$tmpvar=wofang;
$res=reverse($tmpvar);
echo$res;
?
7、优化MYSQL数据库的方法。
(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率
(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Readwrite,从服务器readonly,或者N台服务器,各机器互为Master
(3).(1)和(2)超越PHPProgrammer的要求了,会更好,不会没关系.检查有没有少加索引
(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的GroupBy和orderby,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句
(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,selectcount(*)wherearticle_id=?就可以了,不要先select*wherearticle_id=?然后msql_num_rows.
只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就updatesettitle=?wherearticle_id=?不要setcontent=?(大文本)
(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度
8、谈谈事务处理
A给B的账户转账50美元的例子
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中
//本页地址,SCRIPT_NAME也可以:php/test.php
echo$_SERVER[PHP_SELF].
;
//链接到当前页面的前一页面的URL地址:
echo$_SERVER[HTTP_REFERER].
;
//其它的见参考手册:语言参考》变量》预定义变量
//前执行脚本的绝对路径名:D:Inetpubwwwrootphpest.php
echo$_SERVER[SCRIPT_FILENAME].
;
//正在浏览当前页面用户的IP地址:127.0.0.1
echo$_SERVER[REMOTE_ADDR].
;
//查询(query)的字符串(URL中第一个问号?之后的内容):id=1bi=2
echo$_SERVER[QUERY_STRING].
;
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo$_SERVER[DOCUMENT_ROOT].
;
?
2.执行程序段将输出__。
//参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
echo8%(-2).
;
//取模$a%$b在$a为负值时的结果也是负值。输出-2
echo((-8)%3).
;
//输出2
echo(8%(-3)).
;
?
3.在HTTP1.0中,状态码401的含义是____;如果返回找不到文件的提示,则可用header函数,其语句为____。
答:401表示未授权;header(HTTP/1.0404NotFound);[见参考手册》函数参考》HTTP函数》header]
4.数组函数arsort的作用是____;语句error_reporting(2047)的作用是____。
答:arsort:对数组进行逆向排序并保持索引关系error_reporting(2047)的作用是:reportAllerrorsandwarnings
5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):
$script=以下内容不显示:;
echopreg_replace(/].*?.*?/si,替换内容,$script);
?
6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,
然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
答:LoadModulephp5_modulec:/php/php5apache2.dll;AddTypeapplication/x-httpd-php.php
见参考手册》目录》II.安装与配置》6.Windows系统下的安装》MicrosoftWindows下的Apache2.0.x
7.语句include和require都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。
答:在如何处理失败时,include产生一个警告而require则导致一个致命错误;require_once/include_once
8.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.
答:allow_call_time_pass_referenceboolean:是否启用在函数调用时强制参数被按照引用传递,见参考手册》附录G
9.SQL中LEFTJOIN的含义是__,如果tbl_user记录了学生的姓名(name)和学号(ID),
tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____.
答:自然左外连接
createdatabasephpinterview;
usephpinterview
createtabletbl_user
(
IDintnotnull,
namevarchar(50)notnull,
primarykey(ID)
填空题
有一道题是考sizeof的值的,传给sizeof的参数主要是数组名,指针啥的。
写出至少三种stl数据结构:_________;
c++定义一个空类,系统会自动生成四种函数,默认构造函数,析构函数,赋值函数和_________;
obj是用c++定义的一个类,有objobject=newobj[100];现在想释放掉所有资源,应写的语句是________;
简答题
写出memcpymemsetstrcpy的作用和区别
c++中有堆,栈和静态存储区,他们的作用和区别。
重载和重写的区别
表名为table的表内容如下
yearmonthvalue
200911.1
200921.2
200931.3
200941.4
201012.1
201022.2
201032.3
201042.4
要求查询结果为
yearm1m2m3m4
20091.11.21.31.4
20102.12.22.32.4
编程题
双向循环链表实现它的删除操作
memcpy函数的函数体实现
一、php基础知识
1、strlen与mb_strlen的作用分别是什么
2、下列哪个函数是用正则表达式将字符串分割到数组中
A、Split
B、implode
C、explode
D、join
3、写出下列程序的输出结果
$x=87;
$y=($x%7)*16;
$z=$x$y?1:0;
echo$z;
?
4、写出smarty模板的特点
5、写出下列几个预定义全局变量的作用
$_SERVER['DOCUMENT_ROOT']
当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER['HTTP_HOST']
当前请求的Host:头部的内容
$_SERVER['REMOTE_ADDR']
正在浏览当前页面用户的IP地址
$_SERVER['HTTP_REFERER']
链接到当前页面的前一页面的URL地址
$_SERVER['SERVER_NAME']
当前运行脚本所在服务器主机的名称
$_FILES
包含有所有上传的文件信息。
$_FILES['userfile']['name']
客户端机器文件的原名称。
$_FILES['userfile']['type']
文件的MIME类型,如果浏览器提供此信息的话。一个例子是image/gif。不过此MIME类型在PHP端并不检查,因此不要想当然认为有这个值。
$_FILES['userfile']['size']
已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name']
文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']
和该文件上传相关的错误代码。
6、include和require都能把另外一个文件包含到当前文件中,他们有什么区别?Include和include_once又有什么区别?
7、写出一个能创建多级目录的PHP函数
二、操作系统
1请解释下列10个shell命令的用途
top、ps、mv、find、df、cat、chmod、chgrp、grep、wc
2、写出下列服务的用途和默认端口
ftp、ssh、http、telnet、https
三、面向对象
1、写出php的public、protected、private三种访问控制模式的区别
2、写出下列程序的输出结果
classa{
protected$c;
publicfunction
a{
$this-c=10;
}
}
classbextendsa
{
publicfunctionprint_data{
return
$this-c;
}
}
$b=newb;
echo$b-print_data;
?
3、设计模式考察:请用单态设计模式方法设计类满足如下需求
请用PHP5代码编写类实现在每次对数据库连接的访问中都只能获得唯一的一个数据库连接,具体连接数据库的详细代码忽略,请写出主要逻辑代码
四、数据库
1、写出下面2个PHP操作Mysql函数的作用和区别
mysql_num_rows
mysql_affected_rows
2、sql语句应该考虑哪些安全性?
3、简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
五、系统分析
假设有一个博客系统,数据库存储采用mysql,用户数量为1000万,预计文章总数为10亿,每天有至少10万的更新量,每天访问量为5000万,对数据库的读写操作的比例超过10:1,你如何设计该系统,以确保其系统高效,稳定的运行?
提示:可以从数据库设计,系统框架,及网络架构方面进行描述,可以自由发挥
基础题:
1.表单中get与post提交方法的区别?
答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.
2.session与cookie的区别?
答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
两者都可通过时间来设置时间长短
3.数据库中的事务是什么?
答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
简述题:
1、用PHP打印出前一天的时间格式是2006-5-1022:21:21(2分)
答:echodate(Y-m-dH:i:s,strtotime(-1days));
2、echo,print,print_r的区别(3分)
答:echo是PHP语句,print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
echo输出一个或者多个字符串
3、能够使HTML和PHP分离开使用的模板(1分)
答:Smarty,Dwoo,TinyButStrong,TemplateLite,Savant,phemplate,XTemplate
5、使用哪些工具进行版本控制?(1分)
答:cvs,svn,vss;
6、如何实现字符串翻转?(3分)
答:echostrrev($a);
7、优化MYSQL数据库的方法。(4分,多写多得)
答:
1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOTNULL,例如省份,性别,最好设置为ENUM
2、使用连接(JOIN)来代替子查询:
a.删除没有任何订单客户:DELETEFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)
b.提取所有没有订单客户:SELECTFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)
c.提高b的速度优化:SELECTFROMcustomerinfoLEFTJOINorderidcustomerinfo.customerid=orderinfo.customerid
WHEREorderinfo.customeridISNULL
3、使用联合(UNION)来代替手动创建的临时表
a.创建临时表:SELECTnameFROM`nametest`UNIONSELECTusernameFROM`nametest2`
4、事务处理:
a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败
mysql_query(BEGIN);
mysql_query(INSERTINTOcustomerinfo(name)8iVALUES($name1);
mysql_query(SELECT*FROM`orderinfo`wherecustomerid=.$id);
mysql_query(COMMIT);
5、锁定表,优化事务处理:
a.我们用一个SELECT语句取出初始数据,通过一些计算,用UPDATE语句将新值更新到表中。
包含有WRITE(write)关键字的LOCKTABLE语句可以保证在UNLOCKTABLES命令被执行之前,
不会有其它的访问来对inventory进行插入、更新或者删除的操作
mysql_query(LOCKTABLEcustomerinfoREAD,orderinfoWRITE);
mysql_query(SELECTcustomeridFROM`customerinfo`whereid=.$id);
mysql_query(UPDATE`orderinfo`SETordertitle=$titlewherecustomerid=.$id);
mysql_query(UNLOCKTABLES);
6、使用外键,优化锁定表
a.把customerinfo里的customerid映射到orderinfo里的customerid,
任何一条没有合法的customerid的记录不会写到orderinfo里
CREATETABLEcustomerinfo
(
customeridINTNOTNULL,
PRIMARYKEY(customerid)
)TYPE=INNODB;
CREATETABLEorderinfo
(
orderidINTNOTNULL,
customeridINTNOTNULL,
PRIMARYKEY(customerid,orderid),
FOREIGNKEY(customerid)REFERENCEScustomerinfo
(customerid)ONDELETECASCADE
)TYPE=INNODB;
注意:ONDELETECASCADE,该参数保证当customerinfo表中的一条记录删除的话同时也会删除order
表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB;
7、建立索引:
a.格式:
(普通索引)-
创建:CREATEINDEX索引名ONtablename(索引字段)
修改:ALTERTABLEtablenameADDINDEX[索引名](索引字段)
创表指定索引:CREATETABLEtablename([...],INDEX[索引名](索引字段))
(唯一索引)-
创建:CREATEUNIQUE索引名ONtablename(索引字段)
修改:ALTERTABLEtablenameADDUNIQUE[索引名](索引字段)
创表指定索引:CREATETABLEtablename([...],UNIQUE[索引名](索引字段))
(主键)-
它是唯一索引,一般在创建表是建立,格式为:
CREATATABLEtablename([...],PRIMARYKEY[索引字段])
8、优化查询语句
美的笔试,分A/B卷不分管理、财务、技术,只分A/B卷。试卷内容上虽然不分,但他们会让你注明是哪个类型的,毕竟三个类型参考的标准和方面都不一样。30分钟--20道选择题,5道填空题,1道分析问答题,时间比较紧,除非速度特别快,否则一般都作不完。
1、选择题:跟公务员行政能力测试几乎一模一样,可谓公务员行政能力测试的精简版,有文字逻辑推理题,阅读理解题,图形推理题,出乎意料的是没有数字题,所以那张草稿纸我连用都没用过--事实上,也没时间用。最后有一道题很狠,是一道推理题,有五个问题联系在一起,这种题目最麻烦,要嘛看完题后一个一个做,这样比较费时间,要嘛只能五个全不做,这样对分数又极其不利,两边难做人,只能看自己衡量了。我是跳过去先做了后面的填空题和分析题,后来再回来想做已经没时间了,乱填了几个上去的。现在想来这个策略还是比较好的,毕竟后来的填空题比较容易,且占的分数比较更大些。
2、填空题:这部分倒是比较简单,有两道是给出一个物件(记得第一个是回形钩)并给出三四种用途,要你再写出一种用途,或是给出一个情景(有一个是进入教室后黑板上写着不用上课的情景),同样给出几个原因,让你再说一个原因。最后一个是关于美的集团的标志的,要你把美的标志跟彩虹联系起来,进行联想作出比喻,原题中已经从形状、颜色两个方面作出比喻,要求你再写出一个比喻。整体上,这部分不是很难,只要反应快一些,抓紧时间都没有什么问题。
3、分析问答题:给出一段文字,大概是讲学校为了提高大学课堂的听课率,迫使学生多去上课,推行一个上课打卡制度,正反双方分别从自己的的角度论述了赞成与反对的原因云云。问问题时类似公务员的申论题,第一问问态度:赞成还是反对;第二问问总结:在你的表明态度后你觉得问题的症结在哪里;第三问问细节:问题症结的展开论述。这个情景其实比较简单,而且跟学生生活很贴近,按理说,稍微思考过后都可以答的合情合理,只是一般到了这个地方,时间都所剩无几,没有什么思考的时间,我也是快速浏览后来不及思考更多就写了几点上去,还没写完时间就到了,无奈试卷给收回去了。明天一面,应该小组无领导讨论,好好准备下吧!
最后,对美的这种选人方式做个简单评价:其实美的这种选择方式也挺好的,很多公司都是先笔试,笔试过了再给面试机会,这样一些笔试能力比较差或准备不足而实际表现能力又比较好的人就被筛掉了,可美的采取的做法是:既让你笔试同时也把一面的机会给你,这种可以综合两个方面的表现来确定人选,当然,这建立在他们已经通过性格测试的方式进行了第一轮筛选的基础上,另外,他们具体的操作和标准我不清楚,但如果但从形式上理解,在人力物力财力允许的情况下,这种方式无疑可具有合理性--这是值得肯定的。无论如何,先争取进了再说,加油!!
在开始求职之前,需要做一些准备工作。比方说要知道自己喜欢什么东西而去求职,否则是没有意义的。仅仅成为一名好的编码人员是不够的,你必须理解市场想要的是什么,如何提高自己的应试技能,以找到适合自己的工作。知己知彼百战百胜,在主考官提问你之前,我们首先可以自问如下问题:
1、您是一名系统程序员还是一名应用程序员?
系统程序员与保持计算机系统运行的代码打交道,这些代码包括框架、工具、编译器、驱动程序、服务器等。另一些程序员是他们自己的主要听众,他们很少与非程序员打交道。应用程序开发者与此不同,他们所编写的程序被非程序员用来完成其工作,他们与非技术人员的互动更为频繁。
2、您喜欢编写用户界面吗?
如果是这样,而且如果您拥有这方面的技能,那就要恭喜自己的好运气了。用户界面设计是极为讲究的工作,容易被批评,很难做好,特别是在要考虑国际化和易用性问题的时候。
3、您善于除错吗?
如果您认为在自己的代码中除错已经是够麻烦了,请想像一下替别人的代码除错是怎样的感觉。这需要很强的分析能力和解决问题的能力。找到并消除缺陷可能是很有价值的,但肯定不是每个人都适合这项工作。
4、您喜欢测试吗?
测试也称为品质保证,或缩写为QA,常常遭到缺乏经验的程序员的诋毁,但那些有经验的程序员非常看重独立测试的价值。好的测试人员很难找到。编写工具和自动化的测试用例常常需要编程技能。
5、您是一名架构师还是一名编码人员?
每一个编码职位都需要某方面的设计能力,但某些工作比其他工作更需要设计能力。如果您喜欢设计甚于喜欢编码,软件架构师的职位可能更有吸引力。也就是说,架构师的职位可能涉及许多与他人的互动,较少涉及编码或根本不涉及编码,尽管您需要很好地理解如何进行编码才能有效地进行架构设计。除非您接受软件架构方面的正规培训,否则成为一名架构师的一般途径就是先参加编码工作,然后展示出您在设计和项目各部分集成方面的才能。
前面这些问题涉及您对哪一种类型的工作感兴趣,下面的问题与编程无关,但也是需要考虑的:
6、您对管理有兴趣吗?
某些程序员的长期目标是成为一名经理,但另一些程序员对这个想法会产生恐惧。但如果您的目标是成为管理者,就需要培养自己的领导才能,并展示出您在处理技术问题的同时,也能够管理软件开发中人的问题。如果您的目标不是成为管理者,请寻找那些提供良好的技术职业发展途径的公司,这样在提升时就不需要被迫去管理人。
7、您想为大公司工作吗?
在大的公司中工作既有好的一面也有不利的一面。例如,大的公司通常能够提供更大的工作稳定性,以及某种类型的职业发展途径。它也可能拥有非技术人员知道的品牌。但在另一方面,您也可能对大公司中常常发生的繁文缛节、要求严格和公司内部斗争感到窒息。
8、您想为小公司工作吗?
薪水可能少一些,但随着公司的发展和成功,从底层进入一个新公司肯定对将来有好处(可能会带来相当大的报酬)。当然,不好的一面是大部分新的尝试都会失败,您可能在一两年内失去这份工作。
9、您更喜欢开放源码项目吗?
绝大部分编程工作通常都涉及知识产权,封闭源代码的项目,某些程序员是反对这一点的。现在有一些向更开放的软件开发转变的倾向,为像您这样的人提供了更多的机会,可以参与开放源码项目并同时获得报酬。
10、您希望参加长期的项目还是短期的项目?
某些程序员渴望改变,最多在每个项目上花上几个月的时间。如果您喜欢短期的项目,而且不介意出差,那么成为一名咨询公司的雇员可能比成为一名传统公司的雇员要更好一些。重要的是您必须明白,这些问题没有标准答案,没有正确或错误的答题方式。但是,您在这些问题上对自己越诚实,就越有可能找到真正喜欢的编程工作。
《普通PHP程序员笔试题》由编辑撰写而成,内容素材主要来源于网络,希望在您求职技巧过程中能帮到您!我们把大量的“程序员个人简历模板”内容汇集于专题再现给您,希望您喜欢!
相关文章
最新更新