java电话面试_记一次java电话面试
答案补充中。。。
一、java基础
1、简述java的几种基本数据类型
JAVA的基本数据类型有:byte、char、boolean、short、int、long、float、double
2、什么是装箱和拆箱
3、如何将long转换为int
①强转:int i = (int)123L
②将long装箱为Long,调用 intValue()
③将long转为String,再利用Interger类转换 int i = Integer.parseInt(String.valueOf(123L));
如果待转换的long超出int范围,前两种转出负数,第三种会抛出NumberFormatException异常
4、常用集合考察
①ArrayList初始的大小,以及扩容机制
这里考察源码的阅读,通过阅读源码(JDK1.8)就能找到答案:
ArrayList如果不指定大小,默认构造函数是这么实现的:
publicArrayList() {this.elementData =DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
其中的elementData 就是实际存储数据的数组,如果是默认初始化,在添加第一个元素的时候会默认将大小初始化为 DEFAULT_CAPACITY,相关源码如下:
/**
* The array buffer into which the elements of the ArrayList are stored.
* The capacity of the ArrayList is the length of this array buffer. Any
* empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA
* will be expanded to DEFAULT_CAPACITY when the first element is added.
*/
transient Object[] elementData; // non-private to simplify nested class access
/**
* Default initial capacity.
*/
private static final int DEFAULT_CAPACITY = 10;
至此,可以回答第一个问题,ArrayList默认初始大小就是10,
关于扩容,相关源码如下:
/*** Increases the capacity to ensure that it can hold at least the
* number of elements specified by the minimum capacity argument.
*
*@paramminCapacity the desired minimum capacity*/
private void grow(intminCapacity) {//overflow-conscious code
int oldCapacity =elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1);if (newCapacity - minCapacity < 0)
newCapacity=minCapacity;if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity=hugeCapacity(minCapacity);//minCapacity is usually close to size, so this is a win:
elementData =Arrays.copyOf(elementData, newCapacity);
}
其中的
int newCapacity = oldCapacity + (oldCapacity >> 1);
表明,扩容时时按照原大小加上原大小的一半进行扩容,这里学到了一个逼格较高的操作,那就是右移一位,等价于除以2,但是效率要更高
②List里面重复数据如何去重
本质都是遍历然后借助相关容器进行去重,比如set,hashmap
③hashmap的实现
底层实现还是数组,通过hashcode确定存放位置,如果同一位置已有数据则采用拉链法解决。
具体就是数组的每个元素做成链表,通过链表进行扩展
5、多线程编程
多线程编程的实现方式,具体参考我整理的相关文章:[JAVA]JAVA实现多线程的三种方式
6、socket编程
7、线程池的使用
创建和关闭
二、javaEE基础
1、springMVC的作用
2、用过Spring的哪些组件
3、Spring Bean的生命周期
4、简述Ioc和AoP
三、SQL基础
关于SQL的基础,参考我转载的:常见的数据库SQL面试题以及答案
四、linux基础
1、如何查看java程序状态
2、linux下的常用命令
五、分布式
1、缓存技术
2、消息队列
3、负载均衡
redis、es、Nginx、solr、rocketMQ
六、项目工具
1、maven常用命令
2、IDEA
3、git常用命令
pull、push、commit、分支概念
4、缺陷管理
用过禅道,okit等
java电话面试_记一次java电话面试相关推荐
- java 头尾 队列_记一次腾讯面试,我挂在了最熟悉不过的队列上
前记 面试官问:你了解队列和链表的区别吗? 我:了解,blabla 面试官又问:你能自己实现队列吗?具体讲讲怎么实现? 我当时说了用链表来实现队列的存储,并实现push和pop的操作,但回答的不具体, ...
- java三元运算_记一次java中三元表达式的坑(避免踩坑)
近期一直在刷算法,原创文章写的也比较少,今天的主题不算是一个很大的问题,是我做题的时候出来的,而且还曾在A厂的公众号上看到过,今天自己整理一下,避免大家入坑. 这个问题是三元表达式会在计算的时候出现拆 ...
- 阿里巴巴 java 电话面试题_记一次阿里巴巴电话面试题
前几天投了阿里巴巴校招简历,今天晚上突然来了阿里的面试电话,有点紧张又有点激动,面试的问题问的挺全面,但是有些准备不足,因此回答的并不算太满意,现在整理一下分享给大家,希望进阿里的小伙伴可以来踩踩. ...
- mongodb java 日志分析_记一次log4j与mongodb集成引发的问题分析
问题背景 对项目中的关键应用调用链日志需要结构化得统一吐出到mongodb中,同时项目中日志输出使用log4j,故准备使用log4j的Appender直接集成mongodb的输出,同时mongodb采 ...
- java mysql死锁_记一次线上mysql死锁分析(一)
记录一次比较诡异的mysql死锁日志.系统运行几个月来,就在前几天发生了一次死锁,而且就只发生了一次死锁,整个排查过程耗时将近一天,最后感谢我们的DBA大神和老大一起分析找到原因. 诊断死锁 借助于我 ...
- java没错泄露_记一次尴尬的Java应用内存泄露排查
这星期被线上JVM内存占用不断增大的问题所困扰,自己提出了一些假设,然后去实施验证都一一失败了,有一些经验和教训在这里分享下. 之所以是尴尬,是最后因为修复了另一个看似不相关的问题导致内存不再上升,但 ...
- 阿里巴巴java社招面试_阿里社招Java面试题总结——面试官分享
面试题 1.Java中的内存溢出是如何造成的 2.gc的概念,如果A和B对象循环引用,是否可以被GC? 3.Error.Exception和RuntimeException的区别,作用又是什么? 4. ...
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- java 判断类型_如何快速入门Java编程学习(干货)
一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...
最新文章
- 找到那些新时代的“操作系统”
- erlang: Programming Rules and Conventions。
- 2.select_基础运用
- 详解Python第三方库(一)-----tqdm库
- kafka与zookeeper版本对应关系表
- linux下的常用时间函数总结
- ZABBIX 3.2.7 (源码包)安装部署
- 慕课网 饿了么 vue2.0 项目
- python函数手册pdf_Numpy函数手册(中文版).pdf
- Info.plist信息
- 嵩天python_跟着北京理工大学嵩天老师学习Python
- 国开计算机网络作业,国家开放大学 计算机网络 形考作业1 答案
- PHP手机号截取前三位后四位
- openwrt中br-lan,eth0,eth0.1,eth0.2
- 一文带你了解常见的数据指标都有哪些【数据分析】
- 天线的极化与圆极化天线
- CVE PoC的精选列表(二)
- 深度学习之选择GPU或CPU方法
- Vue 之 echarts 图表数据可视化的基础使用(简单绘制各种图表、地图)
- BLDC 120度方波控制方案 调制方式包含单极性和双极性,反电动势过零点AD采样
热门文章
- Bellman-Ford算法图解及手算过程详解 —— C++代码实现
- HTTP/1.1(消息格式、连接管理、条件请求、范围请求、缓存、身份验证)
- 【VLC开发】libvlc_new函数参数
- chapter3 动态分析基础技术-01在线沙箱 微步云沙箱
- poi操作word实现分页
- MATLAB 彩色图转灰色图处理
- 什么是虚拟机,有什么用?
- “古董级” 诺基亚功能机跑Linux是怎样的画风?
- 2021-2027全球及中国红外探测器芯片行业研究及十四五规划分析报告
- 微信公众号推送天气(最近超火的小玩意)