最近看到点面试题,发现有些知识点自己也不是很清楚于是网上查找并记录下来以供自己以后查看。
一、如何比较对PHP的对象类型的字段进行排序?
(1)首先可以使用对象数组,利用简单的交换来进行操作。
这个就不赘述了,可以使用任何想使用的排序方法:冒泡、希尔、插入、快速等。
(2)使用PHP自带usort(),添加自定义
这个就参考官网的文档。假如现在要对对象People中的年龄字段进行排序为例。
<?php
class People{
private $name ;
private $age ;
public function __construct($new_name, $new_age) {
$this->name = $new_name;
$this->age = $new_age ;
}
public function __set($name, $value) {
$this->$name = $value ;
}
public function __get($name) {
return $this->name;
}
static function cmp_obj($a, $b)
{
return ($a->age - $b ->age);
}
}
$users[] = new People('people_1',20);
$users[] = new People('people_2', 22);
$users[] = new People('people_3',11);
usort($users,array('People',"cmp_obj"));
echo "<Pre>";
print_r($users);
二、PHP 、JAVA 、C++中输出未初始化int变量的结果:
首先PHP是解释型语言,弱类型检查所以php中的类型定义的时候就没有类型的定义所以php中会输出Undefined,
Java是解释编译型语言,但是在编译器中如果没有给变量赋初值,那么编译器是不能通过检查的。c++是编译型语言,当进行数据的定义时,系统会在
内存中分配一块区域给变量,但因为变量未初始化,所以输出的结果是原来这块内存中的值。
三、PHP中哈希表和数组有什么区别?
这个问题有点坑,php中怎么感觉没使用过HASH表,其实php中数组的底层就是使用HASH表来实现的,关联数组就是HASH表。
四、高实时系统架构设计。
由于我接触的主要是前端的内容,所以就以web服务器端的大型架构为例说明,不过个人使用经验并不过,不过一般的架构也差不多是这样.
首先页面元素的简化包括图片、内容缓存可以使用CDN的内容分发管理,然后中间层使用消息队列如RabbitMq,后端业务处理层可以使用
Gearman等分布式处理,数据库设计层:数据的主键、索引、分区、分表,数据库的缓存系统使用Memcached、Redis系统 ,优化数据库查询语句。
然后就是服务器本身Nginx或者Apache本身的优化,通过添加一些扩展优化经常使用的方法或者消息通信转换。如ProtoBuf等协议简化通信。