一,面向对象的特征:
1.抽象 包括数据抽象跟行为抽象,将对象共同的特征取出形成一个类
2.继承 被继承类为基类/超类,继承类为子类/派生类
3.封装 多次使用道德数据或方法,封装成类,方便多次重复调用
4.多态
编译时的多态:方法重载(overload)实现编译时多态
运行时的多态:方法重写(override)实现运行时多态,又称为后绑定

二,访问修饰符区别:
public:对所有类公开
private:对当前类可用,其他不可用
protected:同包下可用
默认default:对于同一个包其他类公开,子类,其他包不可用

三,String类型:
String不是基础数据类型,跟枚举都属于引用类型
8大基础数据类型包括:byte、short、int、long、float、double、char、boolean

四,float f=3.4;是否正确?
不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

五,int和Integer有什么区别?
public static void main(String[] args) {
Integer a = new Integer(3);
Integer b = 3; // 将3自动装箱成Integer类型
int c = 3;
System.out.println(a == b); // false 两个引用没有引用同一对象
System.out.println(a == c); // true a自动拆箱成int类型再和c比较
}

public static void main(String[] args) {
Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150; //因为同为包装类所有无关于值,而是比较引用

System.out.println(f1 == f2); //true 字面值在-128~127中,说明引用同个对象
System.out.println(f3 == f4); //false 字面值不在-128~127之间,包装类会自动生成新包装对象,所有引用不是同个对象
}

六,& ,&&区别
相同点:结果一样,两边都要满足条件时才返回true
不同点:&&有短路,就是一旦第一个表达式为false就直接返回false,后面的直接被断掉,而&会执行完才返回

七, 存在使i + 1 < i的数吗
存在,若i为int类型,i+1超过最大整数,反为负数(最大整数32位)

八, 1900-1-1到2016-11-11有多少天
public static void main(String[] args){
int sum=0;
for(int year=1900;year<=2015;year++){ //因为2016没满一年,先算年
if(year%4==0 && year%100!=0 || year%400==0){
sum=sum+366;
}else{
sum=sum+365;
}
}
for(int month=1;month<=10;month++){ //因为11月没满,先算满10月
if(month==2){
if(2016%10==0 && 2016%100!=0 ||2016%400==0){
sum=sum+29;
}else{
sum=sum+28;
}
}else{
if(month==4 || month==6 ||month==9 ||month==11){
sum=sum+30;
}else{
sum=sum+31;
}
}
}
sum=sum+11;
System.out.print("1900年1月1日到2016年11月11日一共"+sum+"天");
}

九,tomcat中文件夹都有什么用?
bin :命令 开启和关闭服务器
conf:配置文件
server.xml 端口
tomcat-user.xml 远程用户名,密码
lib :jar包
logs:日志
webapps:工程发布位置

十,GET , POST请求方式的区别?
1.get参数通过url传递,post放在request body中。
2.get请求在url中传递的参数是有长度限制的,而post没有。
3.get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。
4.get请求只能进行url编码,而post支持多种编码方式
5.get请求会浏览器主动cache,而post支持多种编码方式。
6.get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

十一,关于文件上传的注意事项:
事项一:上传文件在服务器端保存位置问题
(1)保存在可以被浏览器直接访问的位置
例如:商城中的商品图片
保存在工程的WebRoot下的路径(但不包含META-INF以及WEB_INF目录及其子目录)
(2)保存在不能被浏览器直接访问的位置
例如:付费的视频
保存在工程中 META-INF WEB_INF目录及其子目录下
或者保存到不在工程中的服务器的磁盘目录下
事项二:上传文件在同一目录重名问题
可以在开发中为上传文件起一个随机名称

使用当前的毫秒值
或使用UUID工具类生成随机字符串

事项三:同一目录下文件过多
需要进行目录分离,因为同一文件夹下的文件过多会影响查询速率
目录分离的几种方案:
(1)按照上传时间进行目录分离(月、周)
(2)按照上传用户进行目录分离(为每个用户建立单独的目录)
(3)按照文件固定数量进行分离(假设每个目录只能存放3000个文件,每当一个目录存满3000个文件后,创建一个 新的目录)
(4)按照文件名的hashcode进行目录分离
public static String generateRandomDir(String uuidFileName) {
// 获得唯一文件名的hashcode
int hashcode = uuidFileName.hashCode();
// 获得一级目录
int d1 = hashcode & 0xf;
// 获得二级目录
int d2 = (hashcode >>> 4) & 0xf;
return "/" + d2 + "/" + d1;// 共有256目录l
}
几种目录分离的方法优缺点:
按照时间分离的话 不稳定 比如淘宝双十一访问量最多 按照时间会造成某一时期文件数量过多。
按照用户目录进行分离也不是太好,因为有的用户上传文件数量多 有的少。
按照文件固定数量进行分离固然好,但是需要判断文件夹内文件的数量 相当繁琐。
最好按照文件名的hashcode进行分离

JAVA初级面试题,附个人理解答案的更多相关文章

  1. java多线程面试题选择题大全含答案

    v java多线程面试题选择题大全含答案 java多线程面试题选择题大全含答案 1.下面程序的运行结果()(选择一项)public static void main(String[] args) {T ...

  2. java中高级面试题整理及参考答案

    面试问题: 一.Java基础方面: 1.Java面相对象的思想的理解(主要是多态): http://blog.csdn.net/zhaojw_420/article/details/70477636 ...

  3. Java初级面试题整理

    先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 1. Java语言有哪些特点 ...

  4. java面试题,附个人理解答案

    一,面向对象的特征:1.抽象 包括数据抽象跟行为抽象,将对象共同的特征取出形成一个类2.继承 被继承类为基类/超类,继承类为子类/派生类3.封装 多次使用道德数据或方法,封装成类,方便多次重复调用4. ...

  5. Java 初级面试题及答案

    1.Java中的重载与重写有什么区别 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重 ...

  6. Java高级工程师面试题总结及参考答案

    一.面试题基础总结 1. JVM结构原理.GC工作机制详解 答:具体参照:JVM结构.GC工作机制详解     ,说到GC,记住两点:1.GC是负责回收所有无任何引用对象的内存空间. 注意:垃圾回收回 ...

  7. Java初级面试题

    //1.请问执行下面的程序大致会输出类似什么内容? public class TestThisToString{ public String toString(){ return "my m ...

  8. 100道Java基础面试题收集整理(附答案)

    不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...

  9. 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)

    前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...

随机推荐

  1. c++ 类的继承和多态例子

    类的继承例子: 以上个动态银河系的制作为例,假设我们定义了一个星星的类如下: class Star { public: Star(){} ~Star(){} void Init(); void Mov ...

  2. Maven 技巧知多少

    Maven是一种帮助我们快速构建项目的小工具,它可以解决我们在项目过程中手动导包造成的版本不一致的问题,以及找包困难等问题,同时通过Maven创建的项目都有固定的目录格式,使得约定优于配置,我们通过固 ...

  3. 标准C语言(3)

    操作符用来描述对数字的处理规则根据操作符所需要配合的数字个数把操作符分为单目操作符,双目操作符和三目操作符 C语言里用+,-,*和/表示加减乘除四则运算,它们都是双目操作符,如果参与除法计算的两个数字 ...

  4. linux系统很卡的基本排查方法

    1. 查看内存使用情况 free -g 当观察到free栏已为0的时候,表示内存基本被吃完了,那就释放内存吧(释放内存参考上篇文章) 2. 查看磁盘使用情况 df -h 当发现磁盘使用率很高时,那就要 ...

  5. mysql innodb存储引擎 锁 事务

    以下内容翻译自mysql5.6官方手册. InnoDB是一种通用存储引擎,可平衡高可靠性和高性能.在MySQL 5.6中,InnoDB是默认的MySQL存储引擎.除非已经配置了不同的默认存​​储引擎, ...

  6. d3 词云使用

    D3-Cloud是一个开源的词云实现,基于D3.js,使用HTML5 Canvas绘制输出,因为采用异步的方式处理,所以表现性能良好. 项目主页:https://www.jasondavies.com ...

  7. b2b推广方式有哪些-

    b2b推广方式有哪些 老黄牛推广软件订做 Q:935744345 专业团队,高效推广

  8. PHP基础回顾

    变量:声明变量以$开始,变量名可以用中文但是不要用:不能使用特殊字符,比如@,下划线除外:变量名区分大小写.可变变量 $a = b; $b = c; => $$a = c;  理论上$可以无限使 ...

  9. Angular 英雄示例教程

    英雄指南教程(Tour of Heroes)涵盖了 Angular 的基本知识. 在本教程中,你将构建一个应用,来帮助人事代理机构来管理一群英雄. 这个入门级 app 包含很多数据驱动的应用所需的特性 ...

  10. FFT-Matlab初步实现

    /****************************************************/ /******************************************** ...