资讯专栏INFORMATION COLUMN

面试题整理

MartinDai / 2293人阅读

摘要:一个数据库的状态是否正常可以从哪些指标看出来,至少列出个答以及正在运行的进行监控,其中一个方式就是查看运行状态。

、一个数据库的状态是否正常可以从哪些指标看出来,至少列出2个

</>复制代码

  1. 答QPS以及IOPS
  2. 正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态。
  3. (1)QPS(每秒Query量)
  4. QPS = Questions(or Queries) / seconds
  5. mysql > show global status like "Question%";
、apache和nginx的特性区别在哪?

</>复制代码

  1. apache是一个请求对应一个线程的模式,不管那个请求是否需要读写都会分配一个线程,而nginx则是异步非阻塞模型,只有当请求需要读写的时候才会拿出来处理。
、问页面请求超时取决于nginx的配置还是PHP-CGI的配置?

</>复制代码

  1. nginx
、PHP中的PEAR是什么?

</>复制代码

  1. PEAR也就是为PHP扩展与应用库(PHP Extension and Application Repository),它是一个PHP扩展及应用的一个代码仓库
、fastcgi与cgi的区别

</>复制代码

  1. fastcgi和cgi都是协议,fastcgi是管理cgi的
、PHP中常见错误类型?

</>复制代码

  1. 1、Notice:这些都是一些非常正常的信息,而非重大错误,甚至有一些都不会展示给用户。
  2. 2、Warning:这类是稍微严重一些的错误,错误会展示给用户,但不影响程序的输出。
  3. 3、Fatal errors:这些是非常严重的错误,比如要访问一个不存在的PHP类。
、http 状态码?

</>复制代码

  1. 200 - 服务器成功返回网页
  2. 301 - 永久移动,请求的网页已被永久移动到新位置
  3. 304 - 缓存网页未修改,直接返回内容
  4. 401 - 未授权
  5. 403 -(已禁止) 服务器拒绝请求
  6. 404 - 请求的网页不存在,网页不存在。
  7. 500 - 服务器遇到错误,无法完成请求。
  8. 503 - 服务器暂时不可用,目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。 HTTP 状态代码的完整列表
、php中定义常量时,const和define的区别?

</>复制代码

  1. define ("Newconstant", 30);
  2. 答:使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。
  3. 1const用于类成员变量的定义,一经定义,不可修改。Define不可以用于类成员变量的定义,可用于全局常量。
  4. 2、Const可在类中使用,define不能
  5. 3Const不能再条件语句中定义常量
  6. 4const采用普通的常量名称,define可以采用表达式作为名称
  7. 5const只能接受静态的标量,而define可以采用任何表达式
  8. 6const定义的常量时大小写敏感,而define可以通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。
、PHP支持多继承吗?

</>复制代码

  1. 5.4版本以后可以使用Traits方法实现
  2. 5.4版本不可以。PHP类只能继承一个父类,并用关键字“extended”标识。
、用最简单的语言告诉我PHP是什么?

</>复制代码

  1. PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言。
、什么是MVC?

</>复制代码

  1. MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC可以更高效地管理好3个不同层的PHP代码。

  Model:数据信息存取层。
  View:view层负责将应用的数据以特定的方式展现在界面上。
  Controller:通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

、cookie、session的联系和区别,多台web服务器如何共享session?

</>复制代码

  1. cookie在客户端保存状态,session在服务器端保存状态。但是由于在服务器端保存状态的时候,在客户端也需要一个标识,所以session也可能要借助cookie来实现保存标识位的作用。
  2. cookie包括名字,值,域,路径,过期时间。路径和域构成cookie的作用范围。cookie如果不设置过期时间,则这个cookie在浏览器进程 存在时有效,关闭时销毁。

如果设置了过期时间,则cookie存储在本地硬盘上,在各浏览器进程间可以共享。

</>复制代码

  1. session存储在服务器端,服务器用一种散列表类型的结构存储信息。当一个连接建立的时候,服务器首先搜索有没有存储的session id,如果没有,则建立一个新的session,将session id返回给客户端,

客户端可以选择使用cookie来存储session id。也可以用其他的方法,比如服务器端将session id附在URL上。

</>复制代码

  1. 区别:
  2. (1).cookie在本地,session在服务器端。
  3. (2).cookie不安全,容易被欺骗,session相对安全。
  4. (3).session在服务器端,访问多了会影响服务器性能。
  5. (4).cookie有大小限制,为3K
  6. 多服务器共享session可以尝试将session存储在memcache中。
、浏览器下载最大并发数

</>复制代码

  1. http1.0 一般在2-6
  2. http1.0 一般在4-6
、 简述POST 和GET传输的最大容量分别是多少?

</>复制代码

  1. POST根据PHP.ini文件配置(默认的是8M
  2. GET大小限制在2kb
、http协议中的post和get有何区别?

</>复制代码

  1. GET用于获取信息,不应该用于修改信息,POST可用于更新修改信息。
  2. GET可传输数据大小和URL有关,而POST没有限定大小,大小和服务器配置有关。
  3. GET放在URL中,因此不安全,而pOST传输数据对于用户来说是不可见的,所以相对安全。
  4. 在ajax: post不被缓存,get被缓存所以一般在请求结尾加Math.random();
  5. SERVER端接受:因为在submit提交的时候是按不同方式进行编码的,所以服务端在接受的时候会按照不同的方式进行接受!
  6. 编码方式:如果传递数据是非-ASCII,那么GET一般是不适应的,所以在传递的时候会做编码处理!
、字符串和数字比较,如题输出应该是?

</>复制代码

  1. $s = "abc";
  2. if ($s == 0) {
  3. echo "is zero";
  4. } else {
  5. echo "is not zero";
  6. }
  7. 答案:is zero 因为PHP是弱类型,类型是可以根据赋值改变
、echo count("abc"); 输出什么?

</>复制代码

  1. echo count(null); 答案:0
  2. echo count(false); 答案:1
  3. echo count(true); 答案:1
  4. echo count("abc"); 答案:1
  5. echo count(123); 答案:1
、写个函数用来对二维数组排序。

  array_multisort()

、请写一个函数验证电子邮件的格式是否正确(要求使用正则)

</>复制代码

  1. $reg = "#[a-z0-9-_.]+@[w]{2,}.[w]+#is";
  2. $rst = preg_match($reg, "34234wujunzhiai@163.com");
  3. if($rst){
  4. echo "正确";
  5. }else {
  6. echo "错误";
  7. }
、用php写出显示客户端Ip与服务器Ip的代码

  答案:客户端 getenv("REMOTE_ADDR");
  服务器端 getenv("SERVER_ADDR"); // gethostbyname("www.baidu.com");

、用最少的代码写一个求3值最大值的函数.

</>复制代码

  1. function get_max($a,$b,$c)
  2. {
  3. return ( $a > $b ? $a : $b ) > $c ? ( $a > $b ? $a : $b ) : $c;
  4. }
  5. echo get_max(1,2,3);

7、写出 访问 http://www.sina.com.cn 所需的报文头

</>复制代码

  1. md5_file()
、本页地址,当前脚本的名称

</>复制代码

  1. echo $_SERVER[PHP_SELF];
、链接到当前页面的上一页面的 URL 地址:

  echo $_SERVER[HTTP_REFERER];

、echo(),print(),print_ r()的区别

</>复制代码

  1. echo 是php语句, print和print_ r是函数,语句没有返回值,函数可以有返回值(即便没有用)
  2. print() 只能打印出简单类型变量的值(如int, string)
  3. print_r() 可以打印出复杂类型变量的值(如数组,对象)
、对于大流量的网站,您采用什么样的方法来解决访问量问题?

</>复制代码

  1. 1、pHp缓存
  2. 2、生成html静态页面
  3. 3、使用主辅数据库,把数据库的读写分开
  4. 4、使用负载均衡器和多台服务器
、类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是。

  serialize() 序列化

</>复制代码

  1. unserialize() 反序列化
、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

</>复制代码

  1. 1、pHp程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后pHp会将网页档重新编译,让引入档成为原先网页的一部分。
  2. 2、pHp程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。
  3. 3require() :如果文件不存在,会报出一个fatal error.脚本停止执行
  4. 4、include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行
  5. 5、推荐使用require_once()和include_once(),可以检测文件是否有重复包含。
、如何修改SESSION的生存时间.

</>复制代码

  1. 方法一:
  2. php.inisession.gc_maxlifetime 设置为 9999(默认为 1440)重启 apache 即可
  3. 方法二:
  4. $savepath = "./session_save_dir/";
  5. $lifeTime = 24 * 3600;
  6. session_save_path($savepath);
  7. session_set_cookie_params($lifeTime);
  8. session_start();
  9. 方法三:
  10. setcookie() 或session_set_cookie_params($lifeTime) 在pHp中,heredoc是一种特殊的字符串,它的结束标志必须?
  11. heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串
  12. 需要注意的是:
  13. 1"<<<"后面的EOD是自己定义的标签名称,必须要成对,而且后面要加上分号表示结束。
  14. 2、结束的标签前面最好不要有空格,以免发生错误
、在pHp中error_reporting这个函数有什么作用?

</>复制代码

  1. error_reporting() 用于设置php的侦听错误的级别.[用来配置错误信息回报的等级].
、error_reporting(2047)什么作用?

  答案:相当于 error_reporting("E_ALL"); 输出所有的错误

、检测一个变量是否有设置的函数是?是否为空的函数是?

</>复制代码

  1. isset($a)
  2. empty($a)
、$arr = array("james", "tom", "symfony"); 请打印出第一个元素的值

</>复制代码

  1. echo $arr[0];
、$a = "abcdef"; 请取出$a的值并打印出第一个字母

</>复制代码

  1. 答:echo $a{0} 或 echo substr($a,0,1)
、请写出php5权限控制修饰符

</>复制代码

  1. public(公共)
  2. private(私用)
  3. protected(继承)
、请写出php5的构造函数和析构函数

</>复制代码

  1. __construct() 构造函数
  2. __destruct() 析构函数

4、php中web上传文件的原理是什么,如何限制上传文件的大小?

</>复制代码

  1. pHp上传文件默认大小为2M,设置上传大小的配置项是upload_max_filesize,post_max_size设置一次pOST中pHp能接收的最大数据量,应该比upload_max_filesize大。

5、php防止sql注入式攻击,用什么函数转换字符串?

</>复制代码

  1. addslashes();

6、你常用的php字符串函数?

</>复制代码

  1. substr(),strtolower(),ucwords(),ucfirst(),strtoupper(),implode(),explode(),str_replace(),strpos(),strrev()

8、HTTp的通讯协议是?

</>复制代码

  1. TCP

9、php中的文件读写操作,读取文件test.txt中前300字节的内容?

</>复制代码

  1. $handle=fopen("test.txt","r");
  2. $contents=fread($handle,300);
  3. fclose($handle);

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

</>复制代码

  1. 例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
  2. 答案1:
  3. function getExt($url){
  4. $arr = parse_url($url);
  5. $file = basename($arr["path"]);
  6. $ext = explode(".",$file);
  7. return $ext[1];
  8. }

12、php5中魔术方法函数有哪几个,请举例说明各自的用法

</>复制代码

  1. __construct() :实例化对象时被调用;
  2. __destuct():当删除一个对象或者对象操作终止是被执行;
  3. __call():调用对象不存在方法时被调用;
  4. __get():调用对象不存在的属性时被调用;
  5. __set():设置对象不存在的属性时被调用;
  6. __toString():打印一个对象时被调用,比如echo $obj,print($obj);
  7. __clone():克隆对象时被调用,比如$t = new Test();$tt = clone $t;
  8. __sleep():serialize之前被调用,若对象比较大,想做一些删除在序列化,可以考虑使用该方法;
  9. __wakeup():unserialize之前被调用,做些对象的初始化;
  10. __isset():检测对象是否存在属性的时候被调用,如 isset($c->name);
  11. __unset():unset一个对象属性时被调用,如:unset($c->name);
  12. __set_state():调用var_export时被调用,用__set_state的返回值作为 var_export的返回值
  13. __autoload():实例化一个对象时,如果对应的类不存在,在该方法被调用
  14. 魔术常量:
  15. __LINE__:返回当前行号;
  16. __FILE__:返回文件的完整路径和文件名,如果用在包含文件里面,则返回包含文件名,自 php4.0.2开始,
  17. __FILE__总是包含一个绝对路径,而在此前的版本有时候会包含一个相对路径
  18. __FUNCTION__:返回函数名称(自 php4.3.0新加的)。自php5起本常量返回该函数被定义时的名称,区分大小写,在php4中该值总是小写;
  19. __CLASS__:返回类的名称,自 php4.3.0新加的,自php5起本常量返回该类被定义时的名称,区分大小写,在php4中该值总是小写的;
  20. __METHOD__:返回类的方法名。 php5新加的

13、简单说明pHp的垃圾收集机制是怎样的?

</>复制代码

  1. 对变量有个引用计数,计数到0时变量被销毁

14、请写一段pHp代码,确保多个进程同时写入同一个文件成功

</>复制代码

  1. 代码:
  2. function writeData($path, $mode, $data){
  3. $fp = fopen($path, $mode);
  4. $retries = 0;
  5. $max_retries = 100;
  6. do {
  7. if ($retries > 0) {
  8. usleep(rand(1, 10000));
  9. }
  10. $retries += 1;
  11. }while (!flock($fp, LOCK_EX) and $retries <= $max_retries);
  12. if ($retries == $max_retries) {
  13. return false;
  14. }
  15. fwrite($fp, "$data
  16. ");
  17. flock($fp, LOCK_UN);
  18. fclose($fp);
  19. return true;
  20. }

15、你用什么方法检查php脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在

</>复制代码

  1. php脚本的执行效率
  2. 1, 代码脚本里计时
  3. 2, xdebug统计函数执行次数和具体时间进行分析,最好使用工具winCacheGrind分析
  4. 3, 在线系统用strace跟踪相关进程的具体系统调用
  5. 数据库SQL的效率
  6. sql的explain(mysql),启用slow query log记录慢查询
  7. 通常还要看数据库设计是否合理,需求是否合理等
、microtime和mktime两个函数的区别。

</>复制代码

  1. echo microtime(); 返回当前时间戳
  2. echo mktime(); 取得指定的时间戳

16、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
  $begin = strtotime("2007-2-5");
  $end = strtotime("2007-3-6");
  echo ($end-$begin)/(24*3600);

17、用php打印出前一天的时间格式是YYYY-MM-DD HH:II:SS

</>复制代码

  1. echo date("Y-m-d H:i:s", time()-24*3600);
  2. echo date("Y-m-d H:i:s", strtotime("-1 day")); 前一天
  3. echo date("Y-m-d H:i:s", strtotime("-1 second"));
  4. echo date("Y-m-d H:i:s", strtotime("-1 minute"));
  5. echo date("Y-m-d H:i:s", strtotime("-1 hour"));
  6. echo date("Y-m-d H:i:s", strtotime("-1 day"));
  7. echo date("Y-m-d H:i:s", strtotime("-1 week"));
  8. echo date("Y-m-d H:i:s", strtotime("-1 month"));
  9. echo date("Y-m-d H:i:s", strtotime("-1 year"));

请写一个函数,实现以下功能:
  字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。

  function str_change($str) {

</>复制代码

  1.   $str = str_replace ("_", " ", $str);
  2.   $str = ucwords($str);
  3.   $str = str_replace (" ", "", $str);
  4.   return $str;
  5. }

4、请简述操作系统的线程与进程的区别。列举LINUX下面你使用过的软件?
5、熟悉memcache/redis、MVC/REST架构、模板引擎、中间件的原理与应用者优先;
6、熟悉TCP/IP、HTTP协议者优先;

===============算法=====================
1、请使用伪语言结合数据结构冒泡排序法对以下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。

</>复制代码

  1. $a = array(10,2,36,14,10,25,23,85,99,45);
  2. $count = count($a);
  3. for($j=1; $j<$count; $j++){
  4. for($i=0; $i<$count-$j; $i++){
  5. if($a[$i] > $a[$i+1]) {
  6. $t = $a[$i] ;
  7. $a[$i] = $a[$i+1] ;
  8. $a[$i+1] = $t ;
  9. }
  10. }
  11. }
  12. print_r($a);

============Mysql==========================

、mysql_fetch_row 和mysql_fetch_array之间有什么区别?

</>复制代码

  1. mysql_fetch_row() 从结果集中取得一行作为枚举数组
  2. mysql_fetch_array() 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
、MYSQL取得当前时间的函数是?,格式化日期的函数是

</>复制代码

  1. now() DATE_FORMAT(date , format)
  2. select now();
  3. select curdate();
  4. select curtime();

1、请简述数据库设计的范式及应用。
  一般第3范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免了SQL语句过于庞大所造成系统效率低下

</>复制代码

  1. 1NF:原子性 字段不可再分,否则就不是关系数据库;
  2. 2NF:唯一性 一个表只说明一个事物;
  3. 3NF:每列都与主键有直接关系,不存在传递依赖;

  ANSWER:
  第一范式:若关系模式R的每一个属性是不可再分解的,再属于第一范式。
  第二范式:若R属于第一范式,且所有的非码属性都完全函数依赖于码属性,则为第二范式。
  第三范式:若R属于第二范式,且所有的非码属性没有一个是传递函数依赖于候选码,则属于第三范式

1、创建新闻发布系统,表名为message有如下字段 (3分)

</>复制代码

  1. id 文章id
  2. title 文章标题
  3. content 文章内容
  4. category_id 文章分类id
  5. hits 点击量
  6. 答:
  7. CREATE TABLE `message`(
  8. `id` int(10) NOT NULL AUTO_INCREMENT,
  9. `title` VARCHAR(200) default NULL,
  10. `content` text,
  11. `category_id` int(10) NOT NULL,
  12. `hits` int(20),
  13. PRIMARY KEY(`id`)
  14. )ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

</>复制代码

  1. name score
  2. 张三 语文 59
  3. 张三 数学 80
  4. 张三 英语 33
  5. 李四 语文 50
  6. 李四 数学 50
  7. 李四 英语 58
  8. 王五 语文 88
  9. 王五 数学 90
  10. 答:select name,sum(score<60) as gk,avg(score) as pj from student group by name having gk>=2;

============Javascript==========================

、JS表单弹出对话框函数是?获得输入焦点函数是?

</>复制代码

  1. 弹出对话框: alert(),prompt(),confirm()
  2. 获得输入焦点 focus()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22595.html

相关文章

  • Java面试前需要了解的东西

    摘要:我在面试前针对基础也花了不少的时间,期间也将自己写过的博文粗略地刷了一遍,同时也在网上找了不少比较好的资料部分是没看完的。看面试题也是校验自己是否真正理解了这个知识点,也很有可能会有新的收获。 一、前言 只有光头才能变强 回顾前面: 广州三本找Java实习经历 上一篇写了自己面试的经历和一些在面试的时候遇到的题目(笔试题和面试题)。 我在面试前针对Java基础也花了不少的时间,期间也将...

    renweihub 评论0 收藏0
  • 【推荐】最新200篇:技术文章整理

    摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...

    BicycleWarrior 评论0 收藏0
  • 【推荐】最新200篇:技术文章整理

    摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...

    tommego 评论0 收藏0
  • 从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!

    摘要:正如我标题所说,简历被拒。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。三准备面试其实从三月份投递简历开始准备面试到四月份收,也不过个月的时间,但这都是建立在我过去一年的积累啊。 本文是 无精疯 同学投稿的面试经历 关注微信公众号:进击的java程序员K,即可获取最新BAT面试资料一份 在此感谢 无精疯 同学的分享 目录: 印象中的头条 面试背景 准备面试 ...

    tracymac7 评论0 收藏0
  • 从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!

    摘要:正如我标题所说,简历被拒。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。三准备面试其实从三月份投递简历开始准备面试到四月份收,也不过个月的时间,但这都是建立在我过去一年的积累啊。 本文是 无精疯 同学投稿的面试经历 关注微信公众号:进击的java程序员K,即可获取最新BAT面试资料一份 在此感谢 无精疯 同学的分享目录:印象中的头条面试背景准备面试头条一面(Java+项目)头条...

    wdzgege 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<