我的一份服务端小试题,你觉得还有什么要补充的???

XYUimm 发布于 2015/10/02 20:27
阅读 415
收藏 1

     服务端开发          


1.简述const与define的区别。

(1)  首先从两者的基本解释出发:

     CONST:它是一个C语言的关键字,它限定一个变量不允许被改变。使用CONST在一定程度上可以提高程序的安全性和可靠性,一般形式为:类型  const  只读变量(常量),当然,CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C等。

     Define:在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。“define”为宏定义命令,一般形式为:#define 标识符 字符串。 

    (2) const与define两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内置函数。

    (3) C中常用:“#define 标识符 字符串”定义一个值替代,然而却有个致命缺点:缺乏类型检测机制,这样预处理在C++中成为可能引发错误的隐患,而const推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点,const会经过c++编译器的语法检查,更安全。  

     7. 用于指针的两种情况:const是一个左结合的类型修饰符.int const *A; //A可变,*A不可变int *const A; //A不可变,*A可变 

     8 限定函数的传递值参数:  void function(const int Var); //传递过来的参数不可以改变。 
2.请说明函数传值与传引用的区别。

  按值传递:函数范围内对值的任何改变在函数外部都会被忽略。    按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改。    优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。    按引用传递则不需要复制值,对于性能提高很有好处。     如果不想改变原变量的值的时候就传值,如     $a=1;     function aa($a){     echo ++$a;     }     aa($a);     如果可以让函数改变了原变量的值就可以引用传值,     $a=1;     function aa(&$a){     echo ++$a;     }     aa($a);
3.请写出至少两种不用中间值实现a与b交换值的方法。(a与b全小整型)

    (1) a = a+b;    b = a-b;    a = a-b;

    (2)a = a - b;  b = a + b;a = b - a;

(3) a = a * b;  b = a / b; a = a / b;
4.“数据库”从表user中选出name字段包含admin的前10条结果所有信息的sql语句 

     Select *from name where name like '%admin%' limit 0,10

5.简述HTTP协议中GET、POST、PUT、DELETE、HEAD这几个请求方法。

 OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 GET 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 PUT 向指定资源位置上传其最新内容。 DELETE 请求服务器删除Request-URI所标识的资源。 TRACE 回显服务器收到的请求,主要用于测试或诊断。 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

 

 


6.简述HTTP请求状态码中1**、2**、3**、4**、5**的意义。

1**:信息类,表示收到web浏览器请求,正在进一步的处理。

2**:请求成功,表示用户请求被正确接收 理解和处理。

3**:重定向,表示请求没有成功客户必须采取近一步的动作。

4**:客户端错误,表示客户端提交的请求有错误。

5**:服务区错误,表示服务器不能完成对请求的处理。


7.简述目前利用服务端语言解决HTTP无状态的方法?

   HTTP协议是无状态协议。    

     无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。

     HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。

     Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从: [系统盘]:\Documents and Settings\[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。

     有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。

     与Cookie相对的一个解决方案是Session,它是通过服务器来保持状态的。由于Session这个词汇包含的语义很多,因此需要在这里明确一下 Session的含义。首先,我们通常都会把Session翻译成会话,因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,如何根据键值从 Session中获取匹配的内容等。

     要使用Session,第一步当然是创建Session了。那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。正式这样一个过程,用户的状态也就得以保持了。

     综上所述,HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。

 


8.谈谈你对MVC的理解。

       MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图是用户看到并与之交互的界面。模型表示企业数据和业务规则。控制器接受用户的输入并调用模型和视图去完成用户的需求。MVC的优点:低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、可扩展性,有利于软件工程化管理MVC的缺点:没有明确的定义,完全理解MVC并不容易。不适合小型规模的应用程序。

 9.描述你在开发过程中遇到印象最深刻的问题以及解决过程。 

 

加载中
0
景愿
景愿
你这个应该是校招的题,不然会被OSCer喷的~
XYUimm
XYUimm
是的哎
0
orangleliu
orangleliu
竟然有…… 主观题问问来的更快 逐步深入
0
zigzagroad
zigzagroad
so long, give up to read.
0
jQer
jQer
请告诉我 socket 读错误时,错误代码分别表示的意思
返回顶部
顶部