1. php面向对象面试题

其实这个问题很简单啦,两分钟就可以请清楚啦,我在这里先说一下思想;
首先你得写一个专类表示人,如:person类;
小刘、小属张、MrJosnon、MrJohn等都是这个person类的一个实例;

并且人力资源部问问题这是这个person类当中的一个方法,然后每个人都可以继承自person类,然后又有各自己相关方法等;

然后你得写一个国家类,如:Country类,然后中国是这个国家的一个具体实例;

然后你得写一个城市类,如:City类;然后上海是City类的一个实例;

同样,你得写一个公司类,如:Company类,然后那两个公司又是Company类的两个实例,并且你还得写一个部门类,如:Depart类,然后人力资源部是部门的一个实例;

上面只是这个问题的中文描述,你可以参考一下;

2. php面试题get和post的区别

1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如http://www.domain.com/test.asp?name=51js&password=51js,数据都会直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理

2、 Get 方式需要使用 Request.QueryString 来取得变量的值;而 Post 方式通过 Request.Form 来访问提交的内容

3、Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击,根据微软方面的说法,微软对用 Request.Form() 可接收的最大数据有限制,IIS 4 中为 80 KB 字节,IIS 5 中为 100 KB 字节

建议:除非你肯定你提交的数据可以一次性提交,否则请尽量用 Post 方法

4、Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题是,该页面如果刷新的时候,会弹出一个对话框

建议:出于安全性考虑,建议最好使用 Post 提交数据
***********************************
在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的。Form提供了两种数据传输的方式——get和post。虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响。虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的。
Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:
1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
6、Get是Form的默认方法。
*.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
*.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
*.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
网页表单当中的get方式和post方式的区别
1、get方式可传递的数据量有限,大约是2K左右,而post在iis5当中则达到100k,一般人们可以默认post是无限制的;
2、get方式在提交帐号密码等表单时不如post方式安全。在get提交表单以后浏览器的url会将你提交的表单参数全部显示在地址栏当中,而且可以通过机器的缓存来直接查看到各项参数;而post方式则不会;
3、get方式在后台处理页面用Request.QueryString接收各个参数;而post则用Request.Form获取;
4、get方式会忽略<form action="a.asp?a=a"里边的"a=a"这个参数;而post方式则不会

3. php面试准备前应该准备什么

php的面试一般分为三个部分:

  1. 笔试部分,会针对一些语法问题,常用基础技术问题,出一份试卷给你做;

  2. 面试问题,针对你的简历,主管会经营询问验证,并对你进行综合打分;

  3. 上机操作,会根据职位要求,要求你上线一个小功能之类的;

总之,会结合岗位要求,对你的基本功、专业技能,以及综合素质进行简单的考核,一般不难!【如果对你有帮助,望点赞】

4. php面试一般上机考什么题目

一些专业知识,还有你的工作效率,工作经验呗希望能帮到你,我还要抓紧时间自己在后盾人平台自己学习呢,一起希望加油吧 /⌒ヽ
⊂二二二(^ω^)二⊃
| /
(ヽノ
ノ>ノ
三レレ

5. PHP面试题:PHP数组函数常见的有哪些

array_splice() 删除数组中的指定元

array_splice(数组名,从前往后删的个数,new一个数组的大小);没有第三参数也就没有返数组,没有第三个参数时,第二个参数的意义为从前往后保留几个

exp:
<?php $my_array=array( //建立数组 "hehe"=>"haha", "A"=>"lu", "lu"=>"ge" ); $new=array_splice($my_array,1,3); //使用array_splice(数组名,从前往后删的个数,new一个数组的大小); var_mp($new); ?>
结果:array(2) { ["A"]=> string(2) "lu" ["lu"]=> string(2) "ge" }

2、foreach()数组的遍历

用法:foreach(数组 as 键名=>键值)或foreach(数组 as 键值)

exp:
<?php $my_array=array( //建立数组 "hehe"=>"haha", "A"=>"lu", "lu"=>"ge" ); foreach($my_array as $key=>$value) { echo $key."=>".$value."<br/>"; } ?>
输出结果:
hehe=>haha A=>lu lu=>ge

3、数组的排序

(1)sort()和rsort() 按键值排序sort()从小到大,rsort()从大到小

sort () exp :
<?php $my_array=array(1,2,3,6,7,8,9,4,5);//建立数组 sort($my_array); foreach($my_array as $keys=>$value) { echo $keys."=>".$value."<br/>"; } ?>
输出结果:
0=>1 1=>2 2=>3 3=>4 4=>5 5=>6 6=>7 7=>8 8=>9
rsort() exp:
<?php $my_array=array(1,2,3,6,7,8,9,4,5);//建立数组 rsort($my_array); foreach($my_array as $keys=>$value) { echo $keys."=>".$value."<br/>"; } ?>
输出结果:
0=>9 1=>8 2=>7 3=>6 4=>5 5=>4 6=>3 7=>2 8=>1
(2).asort()和arsort()和上面的原理一样,不过不改变键名和键值的对应关系

exp:
<?php $my_array=array(1,2,3,6,7,8,9,4,5);//建立数组 asort($my_array); foreach($my_array as $keys=>$value) { echo $keys."=>".$value."<br/>"; } ?>
输出结果:
0=>1 1=>2 2=>3 7=>4 8=>5 3=>6 4=>7 5=>8 6=>9
(3)ksort()和krsort()是按键名的大小排序

4.数组的数学类函数

array_sum()计算数组的所有键值的和 count()计算元素的个数

exp:
<?php $my_array=array(1,2,3,6,7,8,9,4,5);//建立数组 echo array_sum($my_array); ?>
输出结果:45

5.其他函数

array_unique() 去除数组中的相同元素

in_array()检测一个值是否在数组中(返回true和false)

array_search()返回的是键或值,返回的是键值所对应的键名

shuffle()打乱原有的数组
<?php $my_array=array(1,2,3,6,7,8,9,4,5,5,5,5);//建立数组 array_unique($my_array);//去除数组中的相同元素 var_mp($my_array); echo "<br/>"; echo in_array(5,$my_array); echo "<br/>"; $new=array_search(6,$my_array);//返回的是键值所对应的键名 echo $new; ?>
输出结果:
array(12) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(6) [4]=> int(7) [5]=> int(8) [6]=> int(9) [7]=> int(4) [8]=> int(5) [9]=> int(5) [10]=> int(5) [11]=> int(5) } 1 3

6. php面试题


以下哪一句不会把 John 新增到 users 阵列?
$users[] = 'john';
成功把 John 新增到阵列 users。
array_add($users,’john’);
函式 array_add() 无定义。
array_push($users,‘john’);
成功把 John 新增到阵列 users。
$users ||= 'john';
语法错误。
2.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?
sort()
根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。
assort()
PHP 没有 assort() 函式,所以可能是 asort() 的笔误。
asort()
与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。
ksort()
根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。
3.以下的代码会产生什么?为什么?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
由于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
4. reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。

$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 传送参数以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。
5.些函式可以用来在现正执行的脚本中插入函式库?
对这道题目不同的理解会有不同的答案,我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。
6.foo() 与 @foo() 有什么分别?
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。
7.你如何替 PHP 的应用程式侦错?
我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。
PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行以下的指令......一年四季春常在 万紫千红永开花 喜迎新春

7. 求php面试题以及答案,php笔试题

java异常机制的原理与应用
答:每当程序出现异常之后,如果程序没有进行相应的处理,则程序会出现中断现象。
实际上,产生了异常之后,JVM会抛出一个异常类的实例化对象,如果此时使用了try语句捕获的话,则可以进行异常的处理,否则,交给JVM进行处理。当try语句捕获异常之后,将与catch语句的异常类型进行匹配,如果匹配成功则执行catch内的语句。简单的应用:在所以throws语句的地方加入try-catch。标准应用:try-catch-finally-throw-throws一起使用。
2. 垃圾回收机制的优点
答:释放无用的对象所占用的空间。方式:自动回收,手动回收。使用System.gc(),实际上调用Runtime.getRuntime().gc()
3. Error与Exception区别
答:Error是jvm进行处理,是jvm出错
exception是可以由程序处理的,可以用try-catch捕获的
4. final,finally,finallize
答:final定义的变量的值不能改变,定义的方法不能被覆盖,定义的类不能被继承
finally是异常的统一出口,finallize是垃圾回收前的收尾工作,是Object类定义的
5. Anonymous Inner Class是否可以extends,是否可以implements Interface
答:允许继承和实现,因为匿名内部类就是在抽象类和接口的基础上发展起来的
6. Static Nested Class 与Inner Class的区别
答:使用Static定义的Class就是外部类,可以通过外部类. 内部类直接访问
而Inner Class是不能被外部访问的,只能通过外部类的实例再找到内部类实例。
7. HashMap and HashTable?
答:HashMap:1) released in jdk 1.2,new Class 2)采用异步处理方式,性能较高,是非线程安全的 3)允许null
HashTable:1)released in jdk 1.0 ,old Class 2)采用同步处理方式,性能低,是线程安全的3)不允许null
8. assert代表什么?
答:asserts是jdk 1.4之后发布的新关键字,表示断言,即程序执行到某个地方肯定是预计的值,一般开发很少使用。要使用assert,必须加上 -ea参数
9. gc是什么?
答:gc是garbage collection,垃圾回收,使用gc可以进行垃圾空间的释放
10. String s = new String("xyz")产生了几个对象?
答:一个匿名对象xyz,在栈空间内。一个new实例化的对象,在堆空间内。
11. sleep() and wait()?
答:sleep()是Thread类定义方法,表示线程的休眠,可以自动唤醒
wait()方法是Object类定义的方法,需要手动notify()和notifyAll()//sleep()不释放资源,wait()释放资源
12. java中存在goto,但不能使用
13.数组有没有length(),String有没有length()?
答:数组有length属性,String有length()
14. Overload与Override的区别
答:Overload:重载
|- 在一个类中定义的若干方法
|- 所有的方法名相同,但参数类型或个数不同
|- 只有参数有关,与返回类型无关
Override:覆写
|- 在继承的关系中
|- 子类定义了父类同名的方法,参数类型或个数最好完全一样。
|- 访问权限不能更严格
15. Set里的元素不能重复,用什么方法区分?==与equals()方法的区别
答:set里的元素是不能重复的,用iterator()方法来区分重复与否,==属于地址比较,
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
16. 列出常见的 runtime exception
答:NumberFormatException/ArrayOutIndexofBoundException/NullPointerException/ClassCastException
17. abstract class 和 interface有什么区别?
答:抽象类:
|-由抽象方法和常量、变量、全局常量、构造方法、普通方法组成
|-使用abstract声明
|-子类要通过extends继承抽象类,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法
|-存在单继承的局限
|-抽象类可以实现若干个接口
接口:
|-由抽象方法和全局常量组成
|-使用interface关键字
|-子类要通过implements实现接口,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法
|-一个子类可以实现多个接口
|-接口不能继承一个抽象类,但允许继承多个接口
18. 启动一个线程要用start(),因为要通知jvm进行cpu资源的分配
19. try里面的代码是否执行,在什么时机执行?
答:finally{}里面的代码执行,在return之前。
20. 写一个singleton
答:singleton的核心就是构造方法私有化,Class,Runtime都采用单例
package com.leongod.demo;
public class Singleton(){
private static final sin = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return sin;
}
}
21. 程序设计:输入一组数字,然后排序输出
答:package com.leongod.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class IO {
public static void main(String[] args) throws Exception {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一组数字,中间用空格分割:");
String str = buf.readLine();
Set<Integer> set = new TreeSet<Integer>();
String[] arr = str.split(" ");

for(String s : arr) {
if (s.matches("\\d+")) {
set.add(Integer.parseInt(s));
}
}

Iterator<Integer> it = set.iterator();
System.out.println("排序后的结果:");
while (it.hasNext()) {
System.out.print(it.next() + ",");
}
}
}
22.列出目录内的文件
package com.leongod.demo;
import java.io.File;
import com.sun.org.apache.xpath.internal.functions.FuncBoolean;
public class FileDemo {
public static void main(String[] args) {
?? File file = new File("D:" + File.separator + "kongkong");
?? fun(file);
}

public static void fun(File file) {
if (file.isDirectory()) {
File[] lf = file.listFiles();
if (lf != null) {
for(File f : lf) {
fun(f);
}
}
}else {
System.out.println(file.toString());
}
}
}
23. char可以存一个中文汉字吗?
答:可以,使用了unicode编码
24.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:两种多线程方法,继承Thread类,实现Runnable接口
|-Thread类是Runnable接口的子类
|-使用Runnable接口可以实现资源共享的目的
|-所有线程操作都必须通过Thread类的start()方法启动
两种实现同步的方法:
|-同步代码块:Synchronized(this)
|-同步方法
25.f=3.4是不对的,3.4默认是double类型的
26.String and StringBuffer?
答:String 不可以修改,StringBuffer可以修改
27.Class.forname向容器中加载驱动程序
28.int与Integer有什么区别?
答:int是基本数据类型,Integer是包装类
在jdk1.5以后,可以实现自动装箱和拆箱
29.2*8有效的方法是移位操作:2<<3
30.请说出类集框架的完整结构
答:类级框架的最大接口:Collection、Map、Iterator、Enumeration
Collection:存放单值
|-List:允许有重复内容
|-ArrayList:异步处理,新的操作类,非线程安全
|-Vector:同步处理,旧的操作类,线程安全,支持Enumeration
|-Set:不允许有重复的内容,依靠hashCode()和equals()进行重复的验证
|-HashSet:无序存放
|-TreeSet:有序存放,按Comparable排序
|-Map:存放一对值
|-HashMap:新的类,异步处理,非线程安全,允许有null
|-HashTable:旧的类,同步处理,线程安全,不允许有null
|-TreeMap:有序排列,按key配需
|-Iterator:迭代输出,依靠collection接口中的iterator方法输出,是新的输出标准
31.是否可以继承String类?答:不可以,因为使用了final关键字

8. PHP 面试问哪些问题可以比较准确的反映出应聘者的开发水平

问问这些:

命名空间怎么用,有什么好处
PHP下面如果过滤表单的内容,有哪内些HTML的过滤库比较好用容?
PDO、mysqli、mysql这三种操作数据库的方法,具体有哪些差异?
问问javascript/jquery,不懂javascript得php程序员要么没有什么经验,要么水平比较低。
再问问php的设计模式,这个是有没有接受过系统训练的基础了。

第一个问题答得好,证明有了解过现代php的开发,用什么框架应该都能快速上手。
第二、三个问题,都是开发中必定用到的基础的东西,算考查究竟懂不懂php。
第四个问题,关系到有没有问题解决能力,不懂javascript的php程序员肯定和前端搭配不好。
第五个问题,看看这个人有没有潜力呗。

11月1日补充:
中间某个问题得罪人了,先抱歉一下。我认为我太武断的说法也有道理,反正,这只是经验之谈,从上方老板的角度出发,肯定是没心思招个干不了活的人慢慢培养的,哪怕你宏观及看法方面很有远见。团队里面肯定要有各种各样的人和技能盏,看你的头儿如何建团队了。

9. PHP面试都会问什么

简单的列出10点供你参考吧
1、php基础知识
2、常用函数使用
3、排序算法
4、引用变量的理解
5、session cookie 的理解
6、http请求 get post php://input 使用
7、mysql数据库链表查询,索引优化方案等
8、linux基本命名的使用 crontab,grep ,tail等
9、缓存 redis,memcached等的使用
10、市场上常用的流行PHP框架掌握,熟悉情况