最近帮公司出面试题,结果如下
选择题:
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)
int foo(int n)
{
if(n<2)return n;
return foo(n-1)+foo(n-2);
}
A.5 B.7 C.8 D.10
5、浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)
A. 找不到该页面 B. 禁止访问 C. 内部服务器访问 D. 服务器繁忙
基础题:
1、表单中 get与post提交方法的区别? 【简单】
答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.
2、session与cookie的区别? 【简单】
(PHP版本)
session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
两者都可通过时间来设置时间长短
3、数据库中的事务是什么? 【简单】
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,
事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
4、数据库题目,完成以下:
(一)创建新闻发布系统,表名为message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量
答:
CREATE TABLE 'message'(
`id` int(10) NOT NULL auto_increment comment '文章id',
`title` varchar(200) default NULL comment '文章标题',
`content` text comment '文章内容',
`category_id` int(10) NOT NULL comment '文章分类id',
`hits` int(20) comment '点击量',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0
答:
SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,
IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN
comment ON message.id=comment.id GROUP BY message.`id`;
(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类 写出如何实现这个下拉菜单(可以用换行表示下拉) 答:
# php版本,其他语言类似
function categoryList()
{
$result=mysql_query("select category_id,categroy_name from category") or die("Invalid query: " . mysql_error());
print("\n");
while($rowArray=mysql_fetch_array($result))
{
print($rowArray['categroy_name']."\n);
}
}
5、用程序实现实现冒泡排序算法(语言不限);加分问题(聊一下冒泡排序的特点,答案:简单,消耗大。还有其他排序算法,快速排序,二分法排序等)
C语言版本冒泡
//冒泡排序1 , 最简单完成
void BubbleSort1(int a[], int n)
{
int i, j;
for (i = 0; i < n; i++)
for (j = 1; j < n - i; j++)
if (a[j - 1] > a[j])
Swap(a[j - 1], a[j]);
}
//冒泡排序2
void BubbleSort2(int a[], int n)
{
int j, k;
bool flag;
k = n;
flag = true;
while (flag) //如果跑过一遍都没有交换过,说明已经排好序了
{
flag = false;
for (j = 1; j < k; j++)
if (a[j - 1] > a[j])
{
Swap(a[j - 1], a[j]);
flag = true; //记录交换状态
}
k--;
}
}
//冒泡排序3
void BubbleSort3(int a[], int n)
{
int j, k;
int flag;
flag = n;
while (flag > 0)
{
k = flag;
flag = 0;
for (j = 1; j < k; j++)
if (a[j - 1] > a[j])
{
Swap(a[j - 1], a[j]);
flag = j; //记录尚需排序的标志位
}
}
}
Java
/*
* 冒泡排序
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arr={6,3,8,2,9,1};
System.out.println("排序前数组为:");
for(int num:arr){
System.out.print(num+" ");
}
for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println();
System.out.println("排序后的数组为:");
for(int num:arr){
System.out.print(num+" ");
}
}
}
php版本
#冒泡排序法
$arr = [12,45,89,3,24,55,223];
$tmp;
for($i=0;$i<count($arr)-1;$i++ ){ # 关键
for($j=0;$j<count($arr)-1-$i;$j++){ # 关键
if($arr[$j] > $arr[$j+1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
}
}
print_r($arr); #关键,需要有输出
6、实现一个99乘法表(语言不限)
c实现
#include<stdio.h> /*c语言打印九九乘法表*/
int main()
{
int i,j;
printf("九九乘法表如下:\n");
for(i=1;i<10;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%-3d",j,i,i*j);
printf("\n");
}
return 0;
}
java实现
/*
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:利用循环输出九九乘法表
* 程序输出:输出九九乘法表
*/
class Demo
{
public static void main(String[] args)
{
System.out.println("hello,java");
System.out.println("九九乘法:");
int x,y;
for(x = 0;x <= 9; x++)
{
for(y = 1;y <= x; y++)
{
System.out.print(y+"*"+x+"="+x*y+"\t");
}
System.out.println();
}
}
}
php实现
for($j=1;$j<=9;$j++){
for ($k=1;$k<=$j;$k++){
$i=$j*$k;
echo $k."X".$j."=".$i." ";
} //内循环结束
echo "<br />";
}
在浏览器中输入网址后都发生了什么
# 没有标准答案(面聊知道可以对方的知识栈和关注点)
浏览器 ->DNS -> IP(TCP/IP) -> 服务器(接入)->应用服务器->DB->应用服务器->服务器(接入)-> IP(TCP/IP;http头还有跳转之类的行为)->浏览器->前端渲染html(css,js)展示渲染结果->拉取资源(image,ajax)->展示