面试

发布时间:2018-03-23编辑:caoww阅读(860)

1.HTTP TCP UDP 的区别,具体用在哪些场景。


TCP与UDP基本区别
  1.基于连接与无连接
  2.TCP要求系统资源较多,UDP较少; 
  3.UDP程序结构较简单 
  4.流模式(TCP)与数据报模式(UDP); 
  5.TCP保证数据正确性,UDP可能丢包 
  6.TCP保证数据顺序,UDP不保证 
  
UDP应用场景:
  1.面向数据报方式
  2.网络数据大多为短消息 
  3.拥有大量Client
  4.对数据安全性无特殊要求
  5.网络负担非常重,但对响应速度要求高
 详情请见:http://h5xyx.top/post/19.html



2. 说一下 java中的队列 set map 区别,java里的数据结构。讲讲它们的实现。、

   https://blog.csdn.net/speedme/article/details/22398395

总结

1. 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
2. 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
3. 在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们 的效率更高。
4. 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
 
5. 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。一旦将对象置入容器内,便损失了该对象的型别信息。
6. 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。


注意:
1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。
2、Set和Collection拥有一模一样的接口。
3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)
4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。
5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。
      HashMap会利用对象的hashCode来快速找到key。
6、Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。
使用values()抽取value序列,将map中的所有values生成一个Collection。

为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。



3.static关键字的作用

“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

  这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:

  方便在没有创建对象的情况下来进行调用(方法/变量)。


http://www.cnblogs.com/dolphin0520/p/3799052.html

static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

  static成员变量的初始化顺序按照定义的顺序进行初始化。


4.final 修饰 属性 类 方法都有什么作用


5.abstract 等关键字的作用,什么时候用


6.子类中如何调用父类的构造器,如果不用super关键字呢?有其他的方式吗?



7.如果两个线程都使用一个ByteBuf 怎么保证它的安全,具体说一下代码实现


8. 好来说一下数据结构,有一个很长的链表,找出倒数第k个元素。 不用两个指针呢?他们之前有什么区别?面试官更想听你说的第二种实现。


9.二叉树的前序遍历,说下怎么实现,不用递归实现呢? 还有其他的方式吗?它们的区别



hashCode和equals方法的区别与联系

HashMap的底层实现AOP的思想,Spring注入的方式linux权限控制Mysql数据库优化方式介绍快速排序版本控制工具,git的branch




jvm堆栈静态区分别存储的内容
创建线程的4中方式sleep和wait的区别


流程图和时序图

2.SOAP协议(这个不了解)3.HTTP的某一个协议(因为不了解 所以不记得了)4.数据结构 list set 具体到arraylist linkedlist vector的区别,hashset的实现,hashmap的实现5.StringBuilder Stringbuffer6.重写和重载7.三个线程的实现方式,线程中的同步8.AJAX9.前台中有两个输入框a和b 在a输入框输入数据并且点击一按钮后b输入框响应显示a的数据,然后点击一个按钮后,将数据提交到后台,后台处理后返回前台,具体的逻辑过程。






标签

评论