首页 > 代码库 > 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-京东面试题