PHP招聘编程的那些函数

2013/03/25 | 星期一 分类:求职招聘 | 没有评论 标签: , , | 作者: | 1,249 views

#PHP输出报错信息,用来调试

#牛年求牛:有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛。

#时区设置
date_default_timezone_set(“Asia/Shanghai”);
date_default_timezone_get();

#1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

#2. 写一个函数,算出两个文件的相对路径.
#如 $a = ‘/a/b/c/d/e.php’;$b = ‘/a/b/12/34/c.php’;
#计算出 $b 相对于 $a 的相对路径应该是”../../../12/34/c.php”

#3.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。.

#求两个日期的差数,例如2013-2-25 ~ 2013-3-6 的日期差数.

架构大中型大流量解决方案

2013/03/24 | 星期日 分类:系统架构 | 没有评论 标签: , | 作者: | 1,324 views

架构大中型大流量解决方案,没有相应的环境无法从实战中去总结经验,主要参考文章:《高并发高流量网站架构》ITPUB论坛 转载文章,实际出处无法查证,来源网络整理,没有实战经验,如下纯属“忽悠”

1.负载均衡:DNS负载均衡早期被广泛使用,优点是简单易用。
a.将多个地址配置成同一个域名,负载均衡就完成了。
b.稍微复杂一点的负载均衡,是反向代理,当外部有请求到代理服务器,代理服务器再将该请求均匀的转发到内网的服务器上。
缺点:如果某一台服务器发生了故障,而DNS的下一个刷新周期又没到,这样就可能导致某些用户无法访问站点的情况发生。而另一个缺点在于DNS负载均衡随机性太强,比如一段时间内众多访问都被指向同一个地址,而另外的地址却闲置,就造成了局部繁忙的不良现象。而且有时某处服务器正在运行其他应用而处于繁忙状态,DNS负载均衡也无从得知,而依旧平均的解析域名。
阅读全文

PHP招聘面试题与解答

2013/03/24 | 星期日 分类:求职招聘 | 一条评论 标签: , , | 作者: | 2,941 views

#PHP算法题,冒泡排序,快速排序,顺序查找法、二分查找法;PHP基础知识,招聘面试题与答案

PHP一些基本面试题与答案:

1、用PHP打印出前一天的时间格式是20013-02-10 22:21:21
echo date(‘Y-m-d H:i:s’, strtotime(‘-1 day’));
或者
$yesterday = time() – (24 * 60 * 60);
echo ‘today:’.date(‘Y-m-d H:i:s’).”\n”;
echo ‘yesterday:’. date(‘Y-m-d H:i:s’, $yesterday).”\n”;

2、echo(),print(),print_r()的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
echo — 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板:smarty,Heyes Template Class等

5、优化MYSQL数据库的方法。
(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。
(2).使用连接(JOIN)来代替子查询(Sub-Queries)
(3).使用联合(UNION)来代替手动创建的临时表
(4).尽量少使用 LIKE 关键字和通配符
(5).使用事务和外键
或者
(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率
(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master
(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引
(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句
(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) … where article_id = 就可以了,不要先select * … where article_id = 然后msql_num_rows.只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update … set title = where article_id = 不要set content = (大文本)
(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度

6、MYSQL取得当前时间的函数是?,格式化日期的函数是:now(), DATE_FORMAT(date,format)

7、对于大流量的网站,您采用什么样的方法来解决访问量问题?
首先,确认服务器硬件是否足够支持当前的流量
其次,优化数据库访问。
第三,禁止外部的盗链。
第四,控制大文件的下载。
第五,使用不同主机分流主要流量
第六,使用流量分析统计软件。

8、用PHP写出显示客户端IP与服务器IP的代码
显示客户端IP:$_SERVER[‘REMOTE_ADDR’];
服务器IP:gethostbyname(‘www.example.com’);

9、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?
require()和include()除了怎样处理失败之外在各方面都完全一样。include()产生一个警告而require()则导致一个致命错误。
换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。
require()无论如何都会包含文件,而include()可以有选择地包含.
代替用include_once,require_once

13、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?
在大部分语言里,双引号是字符串,单引号是字符。但是在PHP里,字符串的表现形式有3种。即:
单引号 ,双引号 ,定界符(heredoc syntax)
看见了吧,单引号居然可以用来表示字符串。那么如果我想表示单引号怎么办?和大多数语言一样,使用转义符号吧。即反斜线.那么使用单引号和双引号有什么区别呢?我的观点是没有多大区别。唯一的区别就是双引号可以应用更多的转义符。
让我们定界符吧。它的语法是\”<<<\"。用法是在其后提供一个标识符,然后在标识符后提供字符串,再在字符串后提供此标识符来结尾。例如:

注意,这里的提供的标志符是EOD,中间的是字符串。 <<

18、foo()和@foo()之间有什么区别?
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
注意: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和include()调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。

19、如何声明一个名为”myclass”的没有方法和属性的类?class myclass{};
如何实例化一个名为”myclass”的对象?$newmyclass = new myclass();

20、你如何访问和设置一个类的属性?
$newmyclass = new myclass();
$temp=$newmyclass->testvalue;
$newmyclass->testvalue=”a”;

21、mysql_fetch_row() 和mysql_fetch_array之间有什么区别?
mysql_fetch_row — 从结果集中取得一行作为枚举数组
mysql_fetch_array — 从结果集中取得一行作为关联数组,或数字数组,或二者兼有

22、GD库是做什么用的?
GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。
在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

23、使用php链接数据库并写一段简单查询,查出所有姓名为“张三”的内容并打印出来表名User(Name Tel Content Date)
请根据上面的题目完成代码:

24、检测一个变量是否有设置的函数是否?是否为空的函数是?isset();empty();
25、取得查询结果集总数的函数是?mysql_fetch_array();

28、请写出PHP5权限控制修饰符
PHP5引入了访问修饰,被放在属性和方法声明的前面用以控制它们的可见性。PHP5中支持以下三种不同的访问修饰:
1、默认的是public(公共),即当你没有为属性和方法指定访问修饰时就默认为public的。而这些public的项目在类内类外都可以访问。
2、private(私有)访问修饰,意味着被修饰的项只能在类中被访问。如果你没使用__get()和__set(),就最好给每个属性都加上private修饰。也可以给方法加private修饰,例如一些只在类中才用到的函数。private修饰的项不能被继承(更多详细内容会在本章后续部分提到)
3、protected(保护)修饰的项能在类及其子类中访问。同样更多详细内容会在本章后续部分提到。现在暂时可以把protected看成界于public和private之间的修饰。

29、请写出php5的构造函数和析构函数: __construct{} __destruct{}

30. 比较sort(), asort(), ksort()三个函数的用法以及使用环境。
sort — 将数组的值由a-z重排,并自动替换索引从0…结束
asort — 此函数将数组的元素由a-z重新排列,且保持原先索引值和元素的对应关系,这个函数主要是用于需要将数组的元素重新排列。这个函数比较常用。
ksort — 此函数将数组依照索引值由a-z重新排列

31. 加载类库的方法。
function __autoload($class){
require_once(“./lib/”.$class.’.php’);
}

32. foo()和@foo()的区别:加上@符号会屏蔽报错提示。

33. 你平时如何调试PHP代码:用echo打出调试或用exit调试。再加上火狐浏览器调。

34. === 的作用是什么?举一个例子,使用 == 返回true,但是使用 === 返回false。:=== 的作用是比较变量的值还比较变量的类型。==只比较值。

36. 一个ereg_replace的理解:ereg_replace — 替换正则表达式
string ereg_replace ( string pattern, string replacement, string string )
本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。
返回替换后的字符串。

40、简单叙述一下Mysql数据库中Varchar和Char数据类型的区别?
varchar是可变长度,会根据字符串实际长度在有限指定范围内进行伸缩
char是固定长度,你分配多大就占用多大
在性能在char比varchar快,原因varchar可计算长度

41、简述MyISAM存储引擎和InnoDB存储引擎的主要区别?
MyISAM不支持事务,也不支持外键;相反,InnoDB支持事务也支持外键;所以如果经常进行INSERTUPDATE操作时应该使用InnoDB。

42、简述Apache服务器中.htaccess 文件的作用是什么?
根据自己的需要,针对特定的目录及子目录改变服务器上的配置,可以做到文件扩展名更改、
网址格式化及重定向(这在使用PHP框架统一入口经常用)等

43、请简单描述一个PHP文件缓存的实现机制(如Smarty的缓存机制原理)。
将用户请求的内容存入一个静态文件中,当再次得到请求时直接从静态文件中输出,减少对数据库的访问;
Smarty的缓存机制原理就是这样,开启Cache后,用户第一次请求,服务器响应,PHP文件经过编译后生成HTML静态页保存在相应目录中,有效期内,用户再次请求,直接从静态页输出。

44、选做题:你怎么理解Run-time errors、Run-time warnings、Compile-time parse errors、Compile-time errors?(PHP内部错误机制)
Run-time errors:解释执行错误
Run-time warnings:解释执行警告
Compile-time parse errors:解析错误
Compile-time errors:编译错误

45、MySQL数据库,一天一万条以上的增量,怎么优化?
一天增量1W数据量并不算十分大,一年下来也就四百万左右,而且没有给定数据的性质和读取频率等。问题可能出在写入压力的问题,我觉得优化的方向应该在于提高写入效率,这样的话索引、外键、触发器等等的使用就需要慎重了。
建立良好的索引。良好的数据库设计。当需要操作的数据按年为单位的话,比如最常用的为当年的数据,那么设计时最简单的方法就是把存储该数据的表设计成已年为单位生成新表, 2012年可以生成 tb2012 到了2012年 数据自动生成并存储在tb2013表中 极大优化了查询速度

47. 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
考查对PHP函数的掌握程度。explode pathinfo strstr substr 正则 preg_match 等。basename

Vim命令大全,linux

2013/03/23 | 星期六 分类:命令文档 | 没有评论 标签: , , | 作者: | 1,468 views

#VIM 编辑器使用技巧
#尽量在插入模式外使用vim ,使用 h、j、k、l 替代箭头键(左h、下j、上k、下l)

#常用的的一些命令.
1.fx:移动光标到当前行的下一个x处。很明显,x可以是任意一个字母,而且你可以使用”;”重复你的上一个f命令;
2.tx:和上面的命令类似,但是是移动到x的左边一个位置;
3.Fx:和fx类似,不是是往回找。使用”,”来重复上一个F命令;
4.Tx:和tx类似,不过是往回移动到x的右边一个位置;
5.b:光标往前移动一个词;
6.w:光标往后移动一个词;
7.0:(数字0)移动光标到行首;
8.^:移动光标到当前行的第一个字母位置;
9.$:移动光标到行末;
10.):移动光标到下一个句子;
11.(:移动光标到上一个句子;
阅读全文

Ubuntu常用命令

2013/03/23 | 星期六 分类:命令文档 | 没有评论 标签: , | 作者: | 1,208 views

# Ubuntu 启动/停止/重启某项服务(start/stop/restart) 使用Aapache为例
service apache start
service apache stop
service apache restart

# Ubuntu 软件包管理命令,添加、删除、更新软件包
apt-get update #刷新软件包列表
apt-get install package_name #从软件包库安装软件
dpkg –install package.deb #从文件安装软件包
apt-get remove package_name #删除软件包
apt-get -s upgrade || apt-get -s dist-upgrade #检查软件包是否有升级
apt-get dist-upgrade #升级软件包
apt-get dist-upgrade #升级整个系统
阅读全文

Linux基本命令

2013/03/23 | 星期六 分类:命令文档 | 没有评论 标签: , | 作者: | 1,272 views

#Linux 2012.11。17 通用、常用的基本命令
uname -a #查看内核版本
ls -al #显示所有文件的属性
pwd #显示当前路径
cd – #返回上一次目录 cd ~ 返回主目录
date #时间、日期
cal #显示日历 cal 2006
bc #计算器具
man & info #帮助手册
locale #显示当前字体 locale -a 所有可用字体 /etc/sysconfig/i18n设置文件
LANG=en #使用英文字体
sync #将数据同步写入硬盘
shutdonw -h now & half & poweroff 关机
reboot #重启
startx & init 5 #进入图形介面
/work & ?work #向上、下查找文档内容
chgrp #改变档案群组 chgrp testing install.log
chown #改变所属人 chown root:root install.log
chmod #改变属性 chmod 777 install.log read=4 write=2 execute=1
cp #复制 cp filename
rm #删除文件 rm -rf filename 强制删除文件
rmdir #删除文件夹
mv #移动 mv 123.txt 222.txt 重命名
mkdir #创建文件夹
阅读全文

Linux下cat,more,less,head,tail等基本命令

2013/03/23 | 星期六 分类:命令文档 | 没有评论 标签: , , , , | 作者: | 12,730 views

#Linux的cat、more、less有什么区别?

1.cat命令功能:用于显示整个文件的内容,单独使用没有翻页功能。因此经常和more命令搭配使用,cat命令还有就是将数个文件合并成一个文件的功能。
2.more命令功能:让画面显示满一屏时暂停,此时可以按空格键继续显示下一个画面,或者按Q键停止显示。
3.less命令功能:less命令的用法与more命令类似,也可以用来浏览超过一页的文件。所不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。当要结束浏览时,只要在less命令的提示符”:”下按Q键即可。

#总结三个命令除了cat命令有合并文件的功能,其余功能上相近,只是从浏览习惯和显示方式上有所不同。
阅读全文

Linux系统常用信息查看命令

2013/03/23 | 星期六 分类:命令文档 | 没有评论 标签: , | 作者: | 1,219 views

# 查看安装的软件包 # dpkg -l

系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
阅读全文

Linux 用户权限分派与控制

2013/03/23 | 星期六 分类:命令文档 | 没有评论 标签: , , | 作者: | 1,265 views

#Linux 用户权限分派与控制

#1.文件的所属关系是可以改变的,只有root才有权改变文件的所属关系
#chown 命令更改某个文件或者目录的所有权;
#chgrp 命令更改文件的组关系;

#2.访问权限:文件主(user)、同组用户(group)、可以访问系统的其他用户(others);访问权限规定3中访问文件或者目录的方式:读(r)、写(w)、可以执行或查找(x)
2.1读权限(r)表示只允许指定用户读取相应文件的内容,禁止对它做任何的更改操作。
2.2写权限(w)表示允许指定用户打开并修改文件。
2.3执行权(x)表示允许指定用户将该文件作为一个程序执行。

阅读全文

PHP工程师掌握技能与招聘

2013/03/22 | 星期五 分类:求职招聘 | 一条评论 标签: , | 作者: | 2,968 views

PHP工程师需要掌握哪些技能呢?

从以下几点说说,看看从事这行业需要掌握的技能:

1.掌握语言本身的语法,熟悉常用类库是必须的;这个可以说是练功过程中的马步,基础必须扎实,扎实了才可以往下看其他的东西。

2.PHP+MYSQL,PHP与数据库的最佳拍当,最好有时间还可以学习一下他的另两个拍当,Linux和apache;lamp中lam不需要你精通,但必须会搭建,并会用linux的基本命令。
阅读全文

第 6 页,共 7 页1234567