您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

几道php面试题 相册类等

2024/4/11 6:24:43发布21次查看
面试题:相册类应用 : 要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达 50m 的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成 flv 供 flash 播放。叙述要涉及的各类开源软件和
面试题:相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50m的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。
答案:
swfupload
pclzip:压缩解压
gd/imagemagic:图片剪裁
ffmpeg:命令行的图形化视频转换工具
测试php和mysql性能的工具
a、php工具
1)hprof —— facebook 开发的一个测试php性能的扩展。特性如下:
1、 flat profile. 提供函数级的汇总信息,比如调用次数、执行时间、内存使用、cpu占用等。
2、 hierarchical profile。 对每个程序,进行了父级调用和子级调用的分解。
3、 diff reports(差异报告)。有很多种情况,我们希望能够对比,比如新版本比旧版本提升了多少速度,两个版本的差距究竟在哪里
4、 callgraph view(调用视图)。性能监测的数据可以绘制成调用视图,方便我们查看
5、 memory profile(内存监控)。这个特性帮助我们了解php如何分配和释放内存
6、 如何处理外部文件。xhprof将include,require,include_once,require_once进来的文件视作是一个 function。
2)xdebug 和wincachegrind:前者生成文件,后者负责解析。
b、mysql工具
用sysbench(或者super-smack)测试mysql性能。使测试获得好得数据,这其实非常简单:1 最大化cpu利用率 2 减少由于io造成的延迟
如何提取一个网页的所有链接?
正则1: [^ ]*) | '(? [^ ']*) '|(? [^> \s]*))[^> ]*?> (? [\s\s]*?)
上面可以提取新浪的全部链接还有标题,比较牛!,下面有个其他网友做的简单的,可能有错:
正则2:/\']+)[|\']?\s*[^>]*>([^>]+)/i
例如:
   ]*>([^>]+)/i', $file, $links);  
   print_r($links);  
exit;       ?>
如何防止同一个用户同时登陆?如果我用aa登陆,别人就不能用了
要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆的用户名,但是还有一个问题就是要知道用户是什么时候离开系统的呢?这就要定期清除cache中的内容了,也就是设置一个cache的时间。这个时间可以跟用户的session值联系起来,刚好当用户session值失效的时候该用户在cache里面的信息也会被清空.这样就达到了防止同时登陆的效果,具体代码如下:
 放在登陆成功的地方:
string key = textbox1.text; //用户名文本框设为cache关键字
string uer = convert.tostring(cache[key]);//读取cache中用户相应的值
//判断cache中是否有用户的信息,如果没有相关的值,说明用户未登陆
if (uer == null || uer == string.empty)
{
 //定义cache过期时间
timespan sesstimeout = new timespan(0, 0,system.web.httpcontext.current.session.timeout, 0, 0);
//第一次登陆的时候插入一个用户相关的cache值,
 httpcontext.current.cache.insert(key,key, null, datetime.maxvalue, sesstimeout,system.web.caching.cacheitempriority.notremovable, null);
 session[adminid]= textbox1.text;
 response.redirect(main.aspx);
}
else
{ //重复登陆
 response.write(您的账号已经登陆!');window.location='login.aspx';);
}
单点登陆sso
很详细,慢慢看http://www.iteye.com/topic/1039052
垃圾什么时候回收?
php 5.3之前使用的垃圾回收机制是单纯的“引用计数”,也就是每个内存对象都分配一个计数器,当内存对象被变量引用时,计数器+1;当变量引用撤掉后,计数器-1;当计数器=0时,表明内存对象没有被使用,该内存对象则进行销毁,垃圾回收完成。
“引用计数”存在问题,就是当两个或多个对象互相引用形成环状后,内存对象的计数器则不会消减为0;这时候,这一组内存对象已经没用了,但是不能回收,从而导致内存泄露;
上面是有问题,js也没有这么做!js用的是?(忘了,哭)
php5.3开始,使用了新的垃圾回收机制,在引用计数基础上,实现了一种复杂的算法,来检测内存对象中引用环的存在,以避免内存泄露
1)垃圾回收的时机
php中,引用计数为0,则内存立刻释放;也就是说,不存在环状引用的变量,离开变量的作用域,内存被立刻释放。
环状引用检测则是在满足一定条件下触发,所以在上面的例子中,会看到使用的内存有大幅度的波动;也可以通过 gc_collect_cycles 函数来主动进行环状引用检测。
2) &符号的影响
显式引用一个变量,会增加该内存的引用计数:
$a = something;
$b = &$a;
此时unset($a), 但是仍有$b指向该内存区域的引用,内存不会释放。
3)unset函数的影响
unset只是断开一个变量到一块内存区域的连接,同时将该内存区域的引用计数-1;在上面的例子中,循环体内部,$a=new a(); unset($a);并不会将$a的引用计数减到零;
4)= null 操作的影响;
$a = null 影响与unset($a)类似;
5)脚本执行结束的影响
脚本执行结束,该脚本中使用的所有内存都会被释放,不论是否有引用环。
问:列出你知道的php中得函数那些是直接作用于变量本身?
str_replace() 函数将返回修改过的字符串,
而 usort() 却直接作用于传递的参数变量本身
其实因为数组传递的是引用,我自己的感觉
这些是函数吗?echo(),print(),unset(),isset(),empty(),include(),require()
上面都是语言结构!
if else都是语言结构,这些是在词法,语法解析中解释,详细看编译原理。
类和非面向对象中,如何定义常量?
class myclass
{   
const constant ='constant value';
}
define(“constant”, “constant value”)
面向对象的魔术方法
__construct, __destruct, __call, __get,__set, __isset, __unset (see overloading), __sleep, __wakeup, __tostring,__set_state and __clone
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product