Java面试中,最常被人问到的几个问题:
1. java.util.*包的UML结构图。
2. Vector和ArrayList、LinkedList区别 Hashtable 和 HashMap之间的区别
3. String、StringBuffer,StringBuilder之间区别。
--回答--
1.
Collection
|
|_List
| |_LinkedList
| |_ArrayList
| |_Vector
|
|_Set
|
|_Map
| |_HashMap
|
|_Compare,Comparetor
|
|_Dictionary
| |_Hashtable
|_ ...
2. LinkedList内部以链表形式存储数据
ArrayList内部以数组形式存储数据。
Vector同ArrayList,不过它与ArrayList比较起来是thread-safe的。
Hashtable是继承了Dictionary,是线程安全的。HashMap实现了Map接口,不是线程安全的。
如何保证线程安全的?每个修改容器中数据的操作都是同步的(synchronized),因此保证了线程安全。
3. String是长度不可变的,StringBuffer和StringBuilder长度都是可以变化的。
St ......
------------------------------------------------------------------------------------------------
这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。
线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。
一提到池,我们会想到数据库连接池,但是线程池又如何呢?
建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。
关于我对同步的认识,要缘于大三年的一本书,书名好像是 Java 实战,这本书写得实在太妙了,真正的从理论到实践,从截图分析到.class字节码分析。哇,我想市场上很难买到这么精致的书了。作为一个Java爱好者,我觉得绝对值得一读。
我对此书印象最深之一的就是:equal()方法,由浅入深,经典!
还有就是同步了,其中提到了我的几个编程误区,以前如何使用同步提高性能等等,通过学习,使我对同步的认识进一步加深。
--------------------------------------------------------------------------------------------------
简单介绍
创建线程有两种方式:继承Thread或实现Runna ......
this
对象本身。public class ThisTest {
ThisTest tTest;
public ThisTest(){
tTest = this;
}
public void test(){
System.out.println(this);
}
public static void main(String arg[]){
new ThisTest().test();
}
}
成员方法引用。
成员变量引用。public class ThisTest {
String name;
String password;
public ThisTest(String name,String password){
this.name = name;
this.password = password;
}
public static void main(String arg[]){
ThisTest tTest= new ThisTest("fanqd","123456");
System.out.println(tTest.name);
System.out.println(tTest.password);
}
}
在构造函数内部第一行,调用本类另一个构造函数。public class ThisTest {
String name;
String password;
public ThisTest(int age){
this("liulingling", "666666");
}
public ThisTest(String name,String password){
this.name = name;
this.password = password;
}
public static void main(String arg[]){
ThisTest tTest= new ThisTest(20);
System.out.println(tTest.name);
System.out.pri ......
1.列举出 10个JAVA语言的优势
a:免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台, 无线应用
2.列举出JAVA中10个面向对象编程的术语
a:包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型
3.列举出JAVA中6个比较常用的包
Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing
4.JAVA中的标识符有什么作用和特点
作用:标识符用作给变量、类和方法命名
特点:可以以字母、下划线“_”和”$”符开头
首字符外,可以跟上字母、下划线“_”和”$”符或数字
Java是大小写敏感的,标识符也不例外
5.JAVA中的关键字有什么特点,列举出至少20个关键字
Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword)
所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字 ;
goto和const 虽然从未被使用,但也作为Java关键字保留;
• 中一共有51个关键字Java
abstract assert boolean break byte continue
case catch char class ......
请参见上一篇文章,登录MSN协议
具体Java实现:
命令序列:<<代表发送,>>代表结果
1.连接DS(Dispatcher Server),得到NS(Notification Server)
<<VER 1 MSNP18 CVR0
>>VER 1 MSNP18
<<CVR 2 0x0804 winnt 5.1 i386 MSNMSGR 14.0.8089.0726 msmsgs yourAccount
>>CVR 2 14.0.8089 14.0.8089 14.0.8089 http://msgruser.dlservice.microsoft.com/download/0/9/7/0974F7CD-D082-46FE-922D-806670345793/zh-chs/wlsetup-cvr.exe http://download.live.com/?sku=messenger
<<USR 3 SSO I yourAccount
>>XFR 3 NS 207.46.124.86:1863 U D
private String dsHost = "64.4.9.254";//ds host
private String nsHost;//ns host
private int port = 1863;//port
private int trId = 1;//命令序列号
private String ticketToken;//在获取联系人时用
//得到向MSN服务器发送的命令
private String getMSNCommand(String cmd, String ... args) {
StringBuilder sb = new StringBuilder();
sb.append(cmd).append(' ');
sb.append(trId++).append(' ');
for (int i = 0; i < a ......
上一篇文章中介绍了怎样利用MSNP登录MSN,在登录后便可取联系人了,很简单。
参考文章:
http://msnpiki.msnfanatic.com/index.php/MSNP13:Contact_List
http://msnpiki.msnfanatic.com/index.php/MSNP15:TicketTokens
在登录后,可以得到一个contacts.msn.com的ticketToken,这可用于后续的验证
一种方法是加入一个MSPAuth的cookie值为ticketToken,另一种是在SOAP请求的<ABAuthHeader xmlns="http://www.msn.com/webservices/AddressBook">中加入<TicketToken>t=RwyZZAkmFsHiK+GCv...&p=</TicketToken>
发送的SOAP请求如下:
POST /abservice/abservice.asmx HTTP/1.1
SOAPAction: http://www.msn.com/webservices/AddressBook/ABFindAll
Content-Type: text/xml; charset=utf-8
Cookie: MSPAuth=Removed
Host: contacts.msn.com
Content-Length: Variable
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoa ......