PHP面试题

最近帮公司出面试题,结果如下
选择题:

1、十进制数27对应的二进制数为( D )。

A.1011 B.1100 C.10111 D.11011

2、DNS的作用是__C___

A.为客户机分配IP地址 B.访问HTTP的应用程序 C.将域名翻译为IP地址 D.将MAC地址翻译为IP地址

3、下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)

A.快速排序 B.堆排序 C.归并排序 D.冒泡排序

4、当n=5时,下列函数的返回值是:(A)

  1. int foo(int n)
  2. {
  3. if(n<2)return n;
  4. return foo(n-1)+foo(n-2);
  5. }

A.5 B.7 C.8 D.10

5、浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)

A. 找不到该页面 B. 禁止访问 C. 内部服务器访问 D. 服务器繁忙

基础题:

1、表单中 get与post提交方法的区别? 【简单】

  1. 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.

2、session与cookie的区别? 【简单】

  1. (PHP版本)
  2. session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
  3. cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
  4. 两者都可通过时间来设置时间长短

3、数据库中的事务是什么? 【简单】

  1. 事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,
  2. 事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

4、数据库题目,完成以下:

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

  1. id 文章id
  2. title 文章标题
  3. content 文章内容
  4. category_id 文章分类id
  5. hits 点击量

答:

  1. CREATE TABLE 'message'(
  2. `id` int(10) NOT NULL auto_increment comment '文章id',
  3. `title` varchar(200) default NULL comment '文章标题',
  4. `content` text comment '文章内容',
  5. `category_id` int(10) NOT NULL comment '文章分类id',
  6. `hits` int(20) comment '点击量',
  7. PRIMARY KEY(`id`)
  8. )ENGINE=InnoDB DEFAULT CHARSET=utf8;

(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)

  1. comment_id 回复id
  2. id 文章id,关联message表中的id
  3. comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

  1. 文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

答:

  1. SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,
  2. IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN
  3. comment ON message.id=comment.id GROUP BY message.`id`;

(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)

  1. category_id int(4) not null auto_increment;
  2. categroy_name varchar(40) not null;

用户输入文章时,通过选择下拉菜单选定文章分类 写出如何实现这个下拉菜单(可以用换行表示下拉) 答:

  1. # php版本,其他语言类似
  2. function categoryList()
  3. {
  4. $result=mysql_query("select category_id,categroy_name from category") or die("Invalid query: " . mysql_error());
  5. print("\n");
  6. while($rowArray=mysql_fetch_array($result))
  7. {
  8. print($rowArray['categroy_name']."\n);
  9. }
  10. }

5、用程序实现实现冒泡排序算法(语言不限);加分问题(聊一下冒泡排序的特点,答案:简单,消耗大。还有其他排序算法,快速排序,二分法排序等)

C语言版本冒泡

  1. //冒泡排序1 , 最简单完成
  2. void BubbleSort1(int a[], int n)
  3. {
  4. int i, j;
  5. for (i = 0; i < n; i++)
  6. for (j = 1; j < n - i; j++)
  7. if (a[j - 1] > a[j])
  8. Swap(a[j - 1], a[j]);
  9. }
  10. //冒泡排序2
  11. void BubbleSort2(int a[], int n)
  12. {
  13. int j, k;
  14. bool flag;
  15. k = n;
  16. flag = true;
  17. while (flag) //如果跑过一遍都没有交换过,说明已经排好序了
  18. {
  19. flag = false;
  20. for (j = 1; j < k; j++)
  21. if (a[j - 1] > a[j])
  22. {
  23. Swap(a[j - 1], a[j]);
  24. flag = true; //记录交换状态
  25. }
  26. k--;
  27. }
  28. }
  29. //冒泡排序3
  30. void BubbleSort3(int a[], int n)
  31. {
  32. int j, k;
  33. int flag;
  34. flag = n;
  35. while (flag > 0)
  36. {
  37. k = flag;
  38. flag = 0;
  39. for (j = 1; j < k; j++)
  40. if (a[j - 1] > a[j])
  41. {
  42. Swap(a[j - 1], a[j]);
  43. flag = j; //记录尚需排序的标志位
  44. }
  45. }
  46. }

Java

  1. /*
  2. * 冒泡排序
  3. */
  4. public class BubbleSort {
  5.   public static void main(String[] args) {
  6.     int[] arr={6,3,8,2,9,1};
  7.     System.out.println("排序前数组为:");
  8.     for(int num:arr){
  9.       System.out.print(num+" ");
  10.     }
  11.     for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
  12.       for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
  13.         if(arr[j]>arr[j+1]){
  14.           int temp=arr[j];
  15.           arr[j]=arr[j+1];
  16.           arr[j+1]=temp;
  17.         }
  18.       }
  19.     }
  20.     System.out.println();
  21.     System.out.println("排序后的数组为:");
  22.     for(int num:arr){
  23.       System.out.print(num+" ");
  24.     }
  25.   }
  26. }

php版本

  1. #冒泡排序法
  2. $arr = [12,45,89,3,24,55,223];
  3. $tmp;
  4. for($i=0;$i<count($arr)-1;$i++ ){ # 关键
  5. for($j=0;$j<count($arr)-1-$i;$j++){ # 关键
  6. if($arr[$j] > $arr[$j+1]){
  7. $tmp = $arr[$j];
  8. $arr[$j] = $arr[$j+1];
  9. $arr[$j+1] = $tmp;
  10. }
  11. }
  12. }
  13. print_r($arr); #关键,需要有输出

6、实现一个99乘法表(语言不限)

c实现

  1. #include<stdio.h> /*c语言打印九九乘法表*/
  2. int main()
  3. {
  4. int i,j;
  5. printf("九九乘法表如下:\n");
  6. for(i=1;i<10;i++)
  7. {
  8. for(j=1;j<=i;j++)
  9. printf("%d*%d=%-3d",j,i,i*j);
  10. printf("\n");
  11. }
  12. return 0;
  13. }

java实现

  1. /*
  2. * 对任务及求解方法的描述部分
  3. * 输入描述:
  4. * 问题描述:利用循环输出九九乘法表
  5. * 程序输出:输出九九乘法表
  6. */
  7. class Demo
  8. {
  9. public static void main(String[] args)
  10. {
  11. System.out.println("hello,java");
  12. System.out.println("九九乘法:");
  13. int x,y;
  14. for(x = 0;x <= 9; x++)
  15. {
  16. for(y = 1;y <= x; y++)
  17. {
  18. System.out.print(y+"*"+x+"="+x*y+"\t");
  19. }
  20. System.out.println();
  21. }
  22. }
  23. }

php实现

  1. for($j=1;$j<=9;$j++){
  2. for ($k=1;$k<=$j;$k++){
  3. $i=$j*$k;
  4. echo $k."X".$j."=".$i." ";
  5. } //内循环结束
  6. echo "<br />";
  7. }

在浏览器中输入网址后都发生了什么

  1. # 没有标准答案(面聊知道可以对方的知识栈和关注点)
  2. 浏览器 ->DNS -> IP(TCP/IP) -> 服务器(接入)->应用服务器->DB->应用服务器->服务器(接入)-> IP(TCP/IP;http头还有跳转之类的行为)->浏览器->前端渲染html(css,js)展示渲染结果->拉取资源(image,ajax)->展示

转载于:https://my.oschina.net/mmfei/blog/1548532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值