首页 > 代码库 > Java-京东面试题

Java-京东面试题

最近参加了京东的面试遇到了些问题,感觉自己的基础知识还是不够扎实

(1)Java 有哪8中基本的数据类型:

(a)四种整数类型(byte、short、int、long):   

byte:8 位,用于表示最小数据单位,如文件中数据,-128~127   

short:16 位,很少用,-32768 ~ 32767   

int:32 位、最常用,-2^31-1~2^31  (21 亿)   

long:64 位、次常用    注意事项:    int i=5; // 5 叫直接量(或字面量),即 直接写出的常数。   

整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。    小于 32 位数的变量,都按 int 结果计算。    强转符比数学运算符优先级高。见常量与变量中的例子。 

b)两种浮点数类型(float、double):   

float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。   

double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾    

c)一种字符类型(char):    char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。 

d)一种布尔类型(boolean):true 真  和 false 假。

(2) ArrayList 和LinkedList 的区别,另外请说明 ArrayList 的数组的默认大小,以及当超出默认大笑之后,内存如何处理;

 

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

还有个 ArrayList 如何默认  List<String> abc=new ArrayList<String>(); 

这个默认是10,现在有个问题,如果我们往下面添加的数据大于10,数组如何存储:

这样,数组会从新拷贝一个新的数组,这个数组的长度如下:

那么容量变化的规则是什么呢?请看下面的公式:
((旧容量 * 3) / 2) + 1
注:这点与C#语言是不同的,C#当中的算法很简单,是翻倍。

然后把之前的元素拷贝进来,然后,原来的回收掉,变成现在的数组,如果后续继续大于现在的新size;则还会按照这个模式进行递增;

(3) Java 中的Map是如何存储的,如何遍历Map;

     HashMap的内部存储结构其实是数组和链表的结合。当实例化一个HashMap时,系统会创建一个长度为Capacity的Entry数组,这个长度在哈希表中被称为容量(Capacity),在这个数组中可以存放元素的位置我们称之为“桶”(bucket),每个bucket都有自己的索引,系统可以根据索引快速的查找bucket中的元素。 
每个bucket中存储一个元素,即一个Entry对象,但每一个Entry对象可以带一个引用变量,用于指向下一个元素,因此,在一个桶中,就有可能生成一个Entry链。 
技术分享 
Map 存储参考:http://carmen-hongpeng.iteye.com/blog/1706415

因此遍历Map的方法有四种:

http://blog.csdn.net/tjcyjd/article/details/11111401

(4)Tomcat 的组成,包含几部分,如何处理并发数的;

默认的连接是200个 

(5)  什么是线程池,为什么要用,如何实现的,多线程runnable thread 的区别和联系

 

(6) 调度quartz

(7) 互联网公司,在应用服务器和数据库服务器之间会有 缓存服务器 使用的技术是:solor es知识,是否了解:

(8)如何遍历map  4数据库如何处理一个事务的过程  比如 转账业务  用了 版本号

(9)spring spingmvc ibatis  如何处理事务的

(10) 应用服务器nginx  

(11)

 

 

 

 

参考:http://blog.163.com/lidan_grace/blog/static/56694837201121732115129/

 

 

M

 

Java-京东面试题