新浪微博笔试题和面试题答案与答案

招聘笔试题2018-11-22李一老师

  1: 有如下一段程序:

  package a.b.c;

  public class Test{

  private static int i=0;

  public int getNext(){

  return i++;

  }

  }

  package a.b.c;

  public class TestB{

  public static void main(String[] args){

  Test test=new Test();

  System.out.println(test.getNext());

  Test testObject=new Test();

  System.out.println(testObject.getNext());

  System.out.println(test.getNext());

  }

  }

  请问最后打印出来的是什么,为什么?

  打印出来时0,1,2

  private static 修饰i,就表示开辟一处内存空间供该类的的所有对象共享,且该成员域只能在该类中访问

  i与实例无关。i用于存储创建实例的个数,i为类的属性而不是实例的属性,本题中getNext()被调用了两次,而且方法中执行的是i++操作,所以结果分别是0,1,2

  2: 有这么一段程序:

  String a=new String("a");

  String b="b";

  String c=a+b;

  StringBuffer strBuf=new StringBuffer();

  strBuf.append("a");

  strBuf.append("b");

  String d=strBuf.toString();

  StringBuilder strBuilder=new StringBuilder();

  strBuilder.append("a");

  strBuilder.append("b");

  String e=strBuilder.toString();

  请问以上程序片段中c、d、e的字符串的创建各有什么不同?

  c和e创建过程是一样的. 都是采用了StringBuilder

  d采用了StringBuffer

  3: 描叙下final, finally, finalize的区别

  final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

  finalize方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

  4: 现有以下数据表结构,请按要求写出SQL语句

  购物人 商品名称 数量

  A 甲 2

  B 乙 4

  C 丙 1

  A 丁 2

  B 丙 5

  查出所有购入商品为两种或两种以上的购物人记录

  select 购物人 as 顾客,count(商品名称) as 商品种类数 from 表 group by 购物人 having count(商品名称)>=2

  6: 描叙下TCP协议三次握手过程

  在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

  第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

  完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:

  未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

  Backlog参数:表示未连接队列的最大容纳数目。

相关推荐

猜你喜欢

大家正在看

换一换