JAVA初级面试题,附个人理解答案
一,面向对象的特征:
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初级面试题,附个人理解答案的更多相关文章
- java多线程面试题选择题大全含答案
v java多线程面试题选择题大全含答案 java多线程面试题选择题大全含答案 1.下面程序的运行结果()(选择一项)public static void main(String[] args) {T ...
- java中高级面试题整理及参考答案
面试问题: 一.Java基础方面: 1.Java面相对象的思想的理解(主要是多态): http://blog.csdn.net/zhaojw_420/article/details/70477636 ...
- Java初级面试题整理
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 1. Java语言有哪些特点 ...
- java面试题,附个人理解答案
一,面向对象的特征:1.抽象 包括数据抽象跟行为抽象,将对象共同的特征取出形成一个类2.继承 被继承类为基类/超类,继承类为子类/派生类3.封装 多次使用道德数据或方法,封装成类,方便多次重复调用4. ...
- Java 初级面试题及答案
1.Java中的重载与重写有什么区别 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重 ...
- Java高级工程师面试题总结及参考答案
一.面试题基础总结 1. JVM结构原理.GC工作机制详解 答:具体参照:JVM结构.GC工作机制详解 ,说到GC,记住两点:1.GC是负责回收所有无任何引用对象的内存空间. 注意:垃圾回收回 ...
- Java初级面试题
//1.请问执行下面的程序大致会输出类似什么内容? public class TestThisToString{ public String toString(){ return "my m ...
- 100道Java基础面试题收集整理(附答案)
不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...
- 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)
前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...
随机推荐
- shell cat EOF 变量自动解析问题
使用如下shell安装node时,一直提示 command not found wget https://mirrors.huaweicloud.com/nodejs/latest-v8.x/node ...
- AIX 下的 find 命令使用
平常我们使用 find , -size +100M/K/G ,就可以找到相应大小的文件了. 可是 AIX 平台下,却好像不能使用,虽然执行起来不报错,但是查找出来的文件却并不是我们想要的.所以 m ...
- keras训练大量数据的办法
最近在做一个鉴黄的项目,数据量比较大,有几百个G,一次性加入内存再去训练模青型是不现实的. 查阅资料发现keras中可以用两种方法解决,一是将数据转为tfrecord,但转换后数据大小会方法不好:另外 ...
- 一个微信小程序跳转到另一个微信小程序
简单来说分两步走: 1.配置项目根目录的 app.json 文件中的 navigateToMiniProgramAppIdList { "pages": [ "pages ...
- C++最快获取像素值
HDC hdc, hdcTemp; RECT rect; BYTE* bitPointer; int x, y; int red, green, blue, alpha; while(true) { ...
- UVALive - 5695 The Last Puzzle (思维+区间dp)
题目链接 题目大意:有n个按钮排成一条直线,你的任务是通过左右移动按下所有按钮,按钮如果一段时间没有被按下就会被弹开. 以下是我的推论(不一定正确): 直观地看的话,如果选择的是最优路径,那么路径的形 ...
- python之路-笔录2[CSS&JS]
*** 目录 *** 1. 块级标签与行内标签 2. css常用清除样式 3. 两种清除浮动的方式 4. CSS学习 5. JS 学习 *** END *** 1. 块级标签与行内标签 常见的块级元素 ...
- ES修改最大分页数
curl -XPUT http://localhost:9200/my_index/_settings?preserve_existing=true -H 'Content-Type: applica ...
- 记Springcloud Config Service整合gitlab一坑
spring.cloud.config.server.git.uri=http://ip/***/configserver.git必须加上.git
- CSS3动画之按钮抖动
今天要分享一组代码,当鼠标悬停在按钮上时.按钮抖动!!! <!DOCTYPE html> <html lang="en"> <head> < ...