程序员面试必考题(二十五)---SPDY与HTTP2协议

程序员面试必考题(二十五)---SPDY与HTTP2协议,第1张

SPDY(SPDY是Speedy的昵音,意为更快),是Google开发的基于TCP协议的应用层协议。SPDY协议的目标是优化HTTP协议的性能,通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性。SPDY协议核心思想是尽量减少TCP连接数,而对于HTTP的语义未做太大修改(比如,HTTP的GET和POST消息格式保持不变),基本上兼容HTTP协议。

超文本传输协议(HTTP)是一个非常成功的协议,但是HTTP/1.1及之前版本的HTTP协议均是针对20世纪90年代之期网络与Web应用需求而设计,其一些特点已经对现代应用程序的性能产生了负面影响,比如:

SPDY正是Google在HTTP即将从1.1向2.0过渡之际推出的协议,长期以来一直被认为是HTTP 2.0可行选择。

SPDY与HTTP相比,具有如下优点:

HTTP/2协议通过定义一个HTTP语义向底层连接的优化映射,来解决这些问题。HTTP/2允许在同一连接上交错地发送/接收请求报文和响应报文,使用高效的HTTP报头字段编码,还支持请求优先级,使让更重要的请求能更快速被处理,从而进一步提升性能。另外,HTTP/2通过使用二进制的消息帧,实现消息的高效处理。

HTTP/2 提供了HTTP语义的优化传输。HTTP/2支持所有HTTP/1.1的核心特征,并且在不同的方面做的更高效。

HTTP/2的基本协议单元是帧(frame),每个类型帧用于不同用途。例如, HEADERS帧和DATA帧构成基本的HTTP请求报文和响应报文,其他类型帧,如SETTINGS帧、WINDOW_UPDATE帧和PUSH_PROMISE帧用于支持HTTP/2的其他特性。

HTTP/2的请求多路复用是通过将每个HTTP请求/响应交换与其自身的流进行关联来实现的。流在很大程度上是相互独立的,因此一个阻塞或终止的请求/响应并不会影响其他流。

HTTP/2的流量控制和优先级能确保高效地使用复用流。流量控制有助于确保只传输接收方使用的数据,优先级可以确保有限的资源被优先用于最重要的流。

HTTP/2添加了一种新的交互模式,即服务器可以向客户端推送消息。服务器推送允许服务端预测客户端需要来发送数据给客户端,平衡网络利用率以及潜在的延迟。

HTTP/2帧包含的HTTP报头字段是压缩的。HTTP请求有可能是高度冗余的,因此压缩能显著减少请求和响应的大小。

HTTP/2使用与HTTP/1.1相同的“http”和“https”URI方案,并且共享相同的默认端口号:“http” URI的默认端口号为80,“https” URI的默认端口号为443。HTTP/2可以使用加密(推荐),也可以不使用加密,“h2”标识使用TLS的HTTP/2(即安全的HTTP/2),“h2c”则标识运行在明文TCP之上的HTTP/2(即非加密的HTTP/2)。

例题:

下面关于HTTP/2的描述中,错误的是

A.HTTP/2基于SPDY协议,充分解决了TCP连接的限制,它允许多个并发HTTP请求公用一个TCP会话

B.针对只能由客户端发起请求的问题,HTTP/2添加了一种新的交互模式,即服务器推送

C.HTTP/2提供了HTTP语义的传输优化,支持HTTP/1.1的所有核心特征,并且在其他方面做得更高效

D.HTTP/2是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层

该题为楚楚街笔试题,根据前文的分析,可见选项A、B、C均是正确叙述,只有选项D的叙述不准确。

《横扫offer---程序员招聘真题详解700题》,开点工作室著,清华大学出版社出版,天猫、京东等各大网上书店及实体书店均已开始发售。

Java是一个很好的面向对象语言,这是08年的试题。你可以在网上下更全套的试题练习。

全国2008年10月考试Java 语言程序设计(一)试题

课程代码:04747

一、单项选择题(本大题共10小题,每小题1分,共10分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

1.下述字符组合不能作为Java程序标识符的是( )

A.Aa12 B.大x

C.y小 D.5x

2.以下程序代码的输出的结果是( )

int x=53

System. out. println(1.0+x/2)

A.27.0 B.27.5

C.1.026 D.1.026.5

3.参照以下Java代码,以下四个叙述中最确切的是( )

class A{

int xstatic int y

void fac(String s){Syatem. out. println(”字符串:”+s)}

}

A.x、y和s都是成员变量

B.x是实例变量、y是类变量、s是局部变量

C.x和y是实例变量、s是参数

D.x、y和s都是实例变量

4.需要分析字符串,并将字符串分解成可被独立使用的单词,可使用java. util包中的类是

( )

A.String B.StringBuffer

C.StringTokenizer D.stringTokenizer

5.要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是( )

A.JFrame(s) B.window(s)

C.new JFrame(s) D.super(s)

6.以下关于菜单的叙述中,正确的是( )

A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项

B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项

C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项

D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项

7.以下所述内容全部是字型要素的是( )

A.字体、字形和大小 B.字体、风格和字号

C.字形、风格和字号 D.字形、颜色和字号

8.用Thread子类实现多线程的步骤顺序是( )

A.声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法

B.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例

C.创建Thread子类的实例,让线程调用start()方法

D.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法

9.为16位Unicode字符流提供读和写 *** 作支持的类分别是( )

A.FileInputStream类和FileOutputStream类

B.InputStream类和OutputStream类

C.FileReader类和FileWriter类

D.File_Reader类和File_Writer类

10.能利用对象提供的方法获得流对象和实现网络连接的是( )

A.URLConnection对象 B.URL对象

C.InetAddress对象 D.TCP/IP对象

二、填空题(本大题共10小题,每小题2分,共20分)

请在每小题的空格中填上正确答案。错填、不填均无分。

11.一个小应用程序必须定义成一个_________。

12.用条件运算符构造一个表达式:goal等于10时,表达式的值为“对了!”,否则,表达式的值为“错了!”。这个表达式是_________。

13.类是对一组相同对象的描述,类概括了同类对象的共有性质:_________。

14.设有数组a和b的定义如下:

int[]a={1,2,3}int[]b={4,5,6}

……

执行以下代码“a=b;”,除了完成赋值 *** 作之外,引起系统额外要做的工作是_________。

15. _________布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。

16.Java语言为处理鼠标事件提供两个接口:_________接口和MouseMotionListener接口。

17.某个绘图方法设置成“异或模式”绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色为红色,并用红色绘制线段,则线段的实际颜色是_________。

18.程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_________方法;二是建立线程实例。

19.BufferedWriter类是提供缓冲式输出的类。程序需要先创建_________对象,再利用这个对象创建BufferedWriter对象。

20.在Java语言中,客户端使用的套接字类是_________。

三、简答题(本大题共6小题,每小题3分,共18分)

21.请写出表示条件“x=2与y=3有且只有一个成立”的Java表达式”。

22.如果类Student是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。

Person p1=new Student()

Person p2=new Undergraduate()

Student s1=new Person()

Student s2=new Undergraduate()

Undergraduate ug1=new Person()

Undergraduate ug2=new Student()

Object ob=new Student()

23.请写出程序处理文本框输入结束事件(回车)添加监视器的方法,以及监视器类必须实现的接口方法。

24.请写出一条语句,能够绘制一条从点(20,30)开始,长为100像素的水平线段。设调用的对象是类型为Graphics的g。

25.某Java程序要使用文件输入输出流,请写出该程序所需要的import语句。

26.JDBC是Java程序与数据库连接的API,请写出JDBC能做的三件事情。

四、程序填空题(本大题共5小题,每空2分,共20分)

27.方法int maxDigit(int n)的功能是找出十进制整数n各位中最大的一位数字。例如,n=23765,该方法的返回值是7。

static int maxDigit(int n){

int c=0,d

while(n>0){

d=_______

if(d>c) c=d

n/=10

}

________

}

28.某程序的界面包含一个文本区text1、一个文本框text2和一个按钮button。实现在文本区中输入整数序列后,点击按钮,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框中。这里给出的是其中相应按钮事件的方法。

public void actionPerformed(ActionEvent e){

int sum

if(e.getSource()==button){

String s=text1.________//获取text1中的信息

StringTokenizer fenxi=new StringTokenizer(s,”,,,\n”)

int n=fenxi.countTokens()

double a[]=new double[n]

for(int i=0i<ni++){

String temp=fenxi.nextToken()

a[i]=Double.valueOf(temp).doubleValue()

}

sum=0

for(int i=0i<ni++){

__________

}

text2.setText(””+sum)//刷新显示。

}

}

29.以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。要求当菜单项singingItem被选中时,在文本框text中输出“唱歌菜单项被选中!”的字样。

……

singingItem=new________(”唱歌”);//生成菜单项对象

……

public void actionPerformed(ActionEvent e){

if(e.getSource()==singingItem)

text.setText(e.________()+ ”菜单项被选中!”);

}

30.某小应用程序实现幻灯片放映。小应用程序的init()方法将幻灯片读入数组中存储和注册鼠标监视器。程序运行时,单击鼠标,就顺序变换放映幻灯片的序号。这里给出的是其中的paint()方法和mousePressed()方法。

final int number=30//假定幻灯片有30张

int count=0

Image[]pic=new Image[number]

public void paint(______gc){

if((pic[count])!=null)

gc.drawImage(pic[count],10,10,pic[count].getWidth(this),

pic[count].getHeight(this),this)

}

public void mousePressed(MouseEvent e){

count=(count+1)% number//循环逐张显示

__________

}

31.以下定义的类shareDataManager用于管理多个线程共享数据data。一些线程要减少data,另一些线程要增加data。由于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改data的线程调用,该方法在data修改结束后,应通知其它等待进入这个方法的线程。

class ShareDataManager{

int data=0

________void modiData(int delta){

if(delta>=0){

data+=delta

}else {

while(data <delta){

try{System.out.println(”发生等待!”);

wait()

}catch(InterruptedException e){ }

}

data-=delta

}

_________

}

ShareDataManager(int ititData){data=initData}

}

五、程序分析题(本大题共5小题,每小题4分,共20分)

32.阅读下列程序,请写出该程序的输出结果。

import java.applet.*import java.awt.*

class Point{

int x,y

Point(int xx,int yy){ x=xxy=yy}

Point(Point p){x=p.xy=p.y }

void m(int dx,int dy){x+=dxy+=dy}

}

class Circle extends Point{

int r

Circle(Point p, int rr){ super(p)r=rr }

float c(){ return 3.14f*2.0f*r }

float a(){ return 3.14f*r*r}

}

public class sample extends Applet{

Circle yuanPoint d

public void init() {d=new Point(2,5)yuan=new Circle(d,10)}

public void paint(Graphics g){

g.drawString(”yuan Circle”+(int)(yuan.c()*100.0)/100.0,5,20)

g.drawString(”yuan Area”+(int)(yuan.a()*100.0)/100.0,5,40)

}

}

33.阅读下列程序,请写出该程序的功能。

import java. util.*

public class Class1{

public static void main(Srting args[]){

Date date1=new Date()

System. out. println (datel)

String t=datel.toString()

int endPos=t.indexOf(‘C’)

t=t.substring(11,endPos)

System. out println(t)

}

}

34.阅读下列程序,请写出该程序的功能。

import java.applet.*import javax.swing.*import java.awt.event.*

public class Class l extends Applet implements ActionListener{

JTextField text1,text2

public void init(){

text1=new JTextField(10) text2=new JTextField(10)

setSize(200,100)add(text1)add(text2)

text1.addActionListener(this)

}

public void actionPerformed(Action Event e){

long n

if(e.getSource()==text1){

n=Long.parseLong(text1.getText())

text2.setText(String.valueOf(n*n))

}

}

}

35.阅读以下程序,请写出该程序的功能。

import javax.swing.* import java.awt.*import java.awt.event.*

class MyScrollBar extends JscrollBar{

public MyScrollBar(int init, int len, int low, int high){

super(JScrollBar. HORIZONTAL, init,len,low,high)

}

}

class MyWindow extends JFrame implements AdjustmentListener{

private JTextField text

MyWindow(String s){

super(s)

MyScrollBar myBar=new MyScrollBar(10,10,0,255)

Container con=this. getContentPane()

con. setLayout(new GridLayout(2,1))

this. setSize(200,100)

this. setLocation(100,100)

myBar.addAdjustmentListener(this)

text=new JTextField(””,20)

con. add(text)con.add(myBar)

this.setVisible(true)

}

public void adjustmentValueChanged(AdjustmentEvent e){

MyScrollBar myBar=(MyScrollBar)e.getAdjustable()

text.setText(””+myBar.getValue())

}

}

public class Class1{

public static void main(String[]args){

MyWindow myWindow=new MyWindow(”text5_4”)

}

}

36.小应用程序创建一个线程。例子使用容器类方法getGraphics()获得Graphics对象,给线程作为画笔使用。请写出该程序中这个线程的工作内容。

import java.applet.*import java.awt.*

public class Class1 extends java.applet.Applet implements Runnable{

Thread redBallGraphics redPen

int rx=0,ry=0

public void init(){

setSize(250,200)

redBall =new Thread(this)

redPen=getGraphics()

redPen. setColor(Color.red)

setBackground(Color.gray)

}

public void start(){ redBall.start() }

public void run(){

while(true){

if(Thread.currentThread()==redBall){

rx=(int)(80*Math.random())

ry=(int)(80*Math.random())

red Pen.setColor(Color.red)

red Pen.fillOval(100+rx,100+ry,10,10)

try{redBall.sleep(500)}

catch(InterruptedException e){}

redPen.setColor(Color.gray)

redPen.fillOval(100+rx,100+ry,10,10)

}

}

}

}

六、程序设计题(本大题共2小题,每小题6分,共12分)

37.编写一个方法halfArray(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。

38.一个Java小应用程序,界面有三个文本框和两个按钮,前两个文本框用于输入整数,第三个文本框用于输出结果。两个按钮分别表示加和减运算。当前两个文本框输入整数后,点击相应按钮,程序就将计算结果输出在第三个文本框中。以下是程序的大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。

注:这里是给定部分的程序,你要编写的是actionPerformed(ActionEvent e)方法。

import java.applet.*import javax.swing.*

import java.awt.* import java.awt.event.*

class Panel1 extends JPanel{

JTextField text1, text2, text3JButton addButton,subButton

Panel1(){

text1=new JTextField(10)text2=new JTextField(10)

text3=new JTextField(10)setLayout(new GridLayout(5,1))

addButton=new JButton(”加”);subButton=new JButton(”减”);

add(text1) add(text2)

add(text3) add(addButton) add(subButton)

}

}

public class Classl extends Applet implements ActionListener{

Pane1 panel

public void init(){

setSize(100,200) panel=new Panel1()add(panel)

(panel.addButton).addActionListener(this)

(panel.subButton). addActionListener(this)

}

public void actionPerformed(ActionEvent e){


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11318467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存