导图社区 公司技术开发岗位招聘面试题
公司技术开发岗位招聘面试题总结,包括PHP基础、MySQL、网络基础、PHP高级、JavaScript等等。
编辑于2022-11-09 09:17:36 广东公司技术开发岗位招聘面试题
PHP基础
会话控制
PHP数据类型
标量类型
boolean
哪些值被认为是FALSE 1、布尔值false 2、整型值0 3、浮点型0.0 4、空白字符串和字符串"0" 5、没有成员的数组 6、NULL
integer
float(浮点,也称double)
string
复合类型
array
object
特殊类型
resource
NULL
PHP常见函数
语言结构
正则表达式
正则处理函数
preg_match
进行表达式匹配
prag_match_all
执行一个全局正则表达式匹配 int preg_match_all ( string $pattern , string $subject [, array &$matches [ )
preg_replace
执行一个正则表达式的搜索和替换 preg_replace ( mixed $pattern , mixed $replacement , ixed $subject ) 搜索subject中匹配pattern的部分, 以replacement进行替换.
preg_split
用正则表达式分割字符串
preg_grep
array preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) 返回给定数组input中与模式pattern 匹配的元素组成的数组.
语法规则
\D
匹配任意一个除十进制数字意外的字符 等价于[^0-9]
\s
匹配任意一个空白字符
\S
匹配除空白字符以外任何一个字符
\w
匹配任意一个数字、字母或下划线 等价于[0-9a-zA-Z]
\W
\W匹配除数字、字母或下划线以外的任意一个字符
元字符
用来修饰原子的,元字符不能单独出现
*
匹配0次、1次或多次其前的原子
+
匹配1次或多次其前的原子
?
匹配0次或1次
.
匹配除了换行符外的任意字符
|
匹配两个或多个分支
{n} {n,} {n,m}
^
匹配输入字符串的开始位置
$
匹配输入字符串的结束位置
[]
匹配方括号中指定的任意一个原子
()
匹配其整体为一个原子。可以理解为由多个单个原子组成的大原子
MySQL
MySQL优化、数据库优化
1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份','性别' 最好设置为ENUM 2、使用连接join来代替子查询 3、优化查询语句 a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作 例子1: select * from order where year(orderDate) select * from order where orderDate 例子2: select * from order where addtime/7 select * from order where addtime
MySQL存储类型
左连接、右链接的使用
索引
MySQL基本操作
安全方面
php.ini中safe_mode开启对PHP系统函数的影响
SQL注入如何预防
1、php.ini 设置magic_quotes_gpc=on 开启后可以将'转换成\' 2、php.ini 设置display_errors=off 这样出错不打印错误信息给黑客 3、使用addslashes等函数过滤用户提交过去的数据 乌云网
网络基础部分
HTTP状态码
200 响应成功 404 请求的网页不存在 503 服务不可用 3xx (重定向) 304 (未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应,不会返回网页内容
常见的端口
200 正常响应 302 地址重定向 304 缓存未过期 403 权限不足 404 访问的页面不存在 500 服务器内部错误
PHP高级
面向对象
面向对象的概念、优点
面向对象的特性
封装
继承
多态
访问类型控制
private
protected
public
抽象类特点、如何定义
常见的关键字和魔术方法
关键字
final
1、使用final标识的类,不能被继承 final class MyClass{ //MyClass不能被继承 } 2、在类中使用final标识的成员方法,在子类中不能被覆盖
static
1、static将类中的属性或方法标识为静态的。 2、类的静态属性类似于函数的全局变量 3、类中的静态成员是不需要对象而使用类名来直接访问的 类名::静态成员属性名 类名::静态成员方法名() 4、可以使用关键字self来访问其他静态成员,而不能用$this来引用。 self::静态成员属性名; self::静态成员方法();
const
1、将类中的成员属性定义为常量 class MyClass{ const CONSTNAME = 'test'; } 2、访问的方式和静态成员一样,都是通过类名或在成员方法中使用self关键字访问 3、标识为常量时一定要给初始值,不能重新赋值
instanceof
1、确定一个对象是类的实例、类的子类,还是实现了某个特定接口
clone
1、克隆可以建立一个对象的副本,改变原来的对象时不影响到副本
abstract
1、abstract定义抽象类和定义抽象方法 abstract class Person{ abstract function fun1(); }
interface
1、接口是一种特殊的抽象类 2、接口中声明的方法必须都是抽象方法,另外不能在接口中声明变量 interface One{ const TEST = 'test value'; function func1(); //在接口中声明一个抽象方法func1,注意抽象方法没有方法体 } 3、因为接口中所有的方法都是抽象方法,所以不需要在方法前使用abstract关键字标识 4、接口中的方法不需要使用public访问权限进行修饰,因为默认权限就只能是public 5、使用extend关键字让一个接口继承另外一个接口,实现接口之间的扩展 6、类继承接口时需要使用implements关键字来实现 7、如果需要使用接口中的成员,需要通过子类去实现接口中的全部抽象方法
魔术方法
__toString
1、获取对象的字符串表示 public function __toString(){//注意方法权限为public return $this->foo;//返回一个成员属性$foo的值 }
__call
1、调用对象中不存在的方法时就会自动调用__call() 2、所以我们可以借助__call()方法提示用户,又或者可以借助__call()实现DB类的连贯操作
__autoload
__set
1、__SET()位私有的成员属性设置值 void __SET(string name,mixed value) 2、__SET的好处是可以统一为私有成员属性设置值,减少频繁操作。
__get
1、在类中声明了__get()方法,则直接在对象的外部获取私有属性时,自动调用此方法,返回私有属性的值 2、可以在__get()方法中根据不同的属性,设置一些条件来限制对私有属性的非法取值操作。 mixed __get(string name)
__isset
1、如果在对象中存在__isset()方法,当在类外部使用isset()函数来测定对象里面的私有属性时,会调用类里面的__isset()方法 private function __isset($propertyName){ return isset($this->$propertyName); }
__unset
1、如果对象中的成员属性被封装,就需要在类中添加__unset()方法,才可以在对象的外部使用unset函数直接删除对象中的私有成员属性。 private function __unset($pName){ unset($this->$pName); }
__construct
1、构造方法是对象创建完成后第一个被对象自动调用的方法 2、通常使用构造方法完成一些对象的初始化工作
__destruct
1、析构方法是对象在销毁之前最后一个被对象自动调用的方法 2、通常使用析构方法完成一些对象在销毁前的清理工作
__sleep
1、在调用serialize()函数将对象串行化时,会自动调用对象中的__sleep()方法,用来将对象中的部分成员串行化。 public function __sleep(){//注意访问权限是public $arr = array('name','age');//数组中的成员$name,$age将被串行化 return $arr; }
__wakeup
1、在调用unserialize()函数反串行化对象时,会自动调用对象中的__wakeup()方法,用来在二进制串重新组成一个对象时,为新对象中的成员属性重新初始化 public function __wakeup(){ $this->age = 40;//在重新组织对象时,为新对象中的$age属性重新赋值 }
MVC
Memcache
JavaScript