java真实面试_深圳百纳九州_java的基本数据类型有几种,并且写出全部的数据类型写出常用的Linux命令finalfinalize和finnally的不同之处用java手写一个单例类
Posted 平凡加班狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java真实面试_深圳百纳九州_java的基本数据类型有几种,并且写出全部的数据类型写出常用的Linux命令finalfinalize和finnally的不同之处用java手写一个单例类相关的知识,希望对你有一定的参考价值。
系列文章目录
文章目录
一、java的基本数据类型有几种,并且写出全部的数据类型
八种基本数据类型
int、
long、
double、
byte、
char、
float、
short、
boolean
八种基本数据类型分别是:
1、4种整数类型(byte、short、int、long);
2、2种浮点类型(float、double);
3、1种字符类型“char”;
4、1种布尔类型“boolean”
二、写出常用的Linux命令
我自己写的
cp 复制
ls -a 查看所有文件
cd ~ 回到当前用户目录
pwd 显示当前所在目录
vim 编辑文档
:q!强制退出
:wq! 保存之后强制退出
ping - c4 www.baidu.com 拼一个网址(这里以百度为例)拼4次
其它的对着文档看,默写出来需要经过大量的自己写和练习
参考答案:
1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。
find . -name "*.xml" 递归查找所有的xml文件
find . -name "*.xml" |xargs grep "hello world" 递归查找所有文件内容中包含hello world的xml文件
grep -H 'spring' *.xml 查找所以有的包含spring的xml文件
find ./ -size 0 | xargs rm -f & 删除文件大小为零的文件
ls -l | grep '.jar' 查找当前目录中的所有jar文件
grep 'test' d* 显示所有以d开头的文件中包含test的行。
grep 'test' aa bb cc 显示在aa,bb,cc文件中匹配test的行。
grep '[a-z]\\{5\\}' aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
2.查看一个程序是否运行 ps –ef|grep tomcat 查看所有有关tomcat的进程
3.终止线程 kill -9 19979 终止线程号位19979的进程
4.查看文件,包含隐藏文件 ls -al
5.当前工作目录 pwd
6.复制文件 cp source dest 复制文件 cp -r sourceFolder targetFolder 递归复制整个文件夹 scp sourecFile romoteUserName@remoteIp:remoteAddr 远程拷贝
7.创建目录 mkdir newfolder
8.删除目录 rmdir deleteEmptyFolder删除空目录 rm -rf deleteFile 递归删除目录中所有内容
9.移动文件 mv /temp/movefile /targetFolder
10.重命令 mv oldNameFile newNameFile
11.切换用户 su -username
12.修改文件权限 chmod 777 file.java //file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行
13.压缩文件 tar -czf test.tar.gz /test1 /test2
14.列出压缩文件列表 tar -tzf test.tar.gz
15.解压文件 tar -xvzf test.tar.gz
16.查看文件头10行 head -n 10 example.txt
17.查看文件尾10行 tail -n 10 example.txt
18.查看日志类型文件 tail -f exmaple.log//这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)。
19.使用超级管理员身份执行命令 sudo rm a.txt 使用管理员身份删除文件
20.查看端口占用情况 netstat -tln | grep 8080 查看端口8080的使用情况
21.查看端口属于哪个程序 lsof -i :8080
22.查看进程 ps aux|grep java 查看java进程 ps aux查看所有进程
23.以树状图列出目录的内容 tree a ps:Mac下使用tree命令
24.文件下载 wget http://file.tgz mac下安装wget命令 curl http://file.tgz
25.网络检测 ping www.just-ping.com
26.远程登录 ssh userName@ip
27.打印信息 echo $JAVA_HOME 打印java home环境变量的值
28.java 常用命令 java javac jps ,jstat ,jmap, jstack
29.其他命令 svn git maven
三、final、finalize和finnally的不同之处
参考答案:
final 是一个修饰符,可以修饰变量、方法和类。如果 final 修饰变量,意味着该
变量的值在初始化后不能被改变。
finally是一个关键字,与 try 和 catch 一起用于异常的处理。finally 块一定会被执行,
无论在 try 块中是否有发生异常
finalize
这个方法是JVM自己调用的,我们编程用不到。他几是个垃圾回收器。等一段时间JVM自动回收垃圾数据
四、 创建线程有哪几种方式?
创建线程有三种方式:
继承 Thread 重写 run 方法;
实现 Runnable 接口;
实现 Callable 接口。
五、权限怎么设计,几个表可以完成
我的答案
五张表
用户表 角色表、用户和角色关系表、菜单表、角色和菜单关系表
对这五张表进行CURD(增删改查)即可实现权限管理
参考答案:
六、[1,a,3,5,b,9,c] 和 [2,4,5,6,c,8,9]代码实现最快找出相同数
【这个暂时没有找到答案】
七、spring有哪两大机制,两大机制的原理是什么,并且列举出这两大机制的应用场景
IoC(控制反转)/ DI(依赖注入)
AOP(面向切面编程)
Spring 是一个企业级开发框架,是软件设计层面的框架,优势在于可以将应用程序进行分层,开发者可以自主选择组件。
MVC:Struts2、Spring MVC
ORMapping:Hibernate、MyBatis、Spring Data
AOP的作用
作用:在不修改源代码的情况下,可以实现功能的增强
横向抽取机制(AOP思想):
AOP 思想: 基于代理思想,对原来目标对象,创建代理对象,在不修改原对象代码情况下,通过代理对象,调用增强功能的代码,从而对原有业务方法进行增强
AOP应用场景
场景一: 记录日志
场景二: 监控方法运行时间 (监控性能)
场景三: 权限控制
场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )
场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )
参考文档:链接
八、数据库的四大特征是什么
原子性、一致性、持久性、隔离性
九、sql的优化方式有哪些
其实我自己写过一篇文章,但是记不全了,真尴尬
参考自己的链接:我的博客
十、用java手写一个单例类
自己写:
参考答案一
参考答案2:
面试官:请手写下几种常见的单例模式
我:好的(面带微笑)
为什么要有单例模式?
实际编程应用场景中,有一些对象其实我们只需要一个,比如线程池对象、缓存、系统全局配置对象等。这样可以就保证一个在全局使用的类不被频繁地创建与销毁,节省系统资源
实现单例模式的几个要点
1、首先要确保全局只有一个类的实例,要保证这一点,至少类的构造器要私有化。
2、单例的类只能自己创建自己的实例,因为,构造器私有了,但是还要有一个实例,只能自己创建咯!
3、单例类必须能够提供自己的唯一实例给其他类,就是要有一个公共的方法能返回该单例类的唯一实例
单例模式的6种实现
1、饿汉式—静态常量方式(线程安全)
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}
类加载时就初始化实例,避免了多线程同步问题。天然线程安全
2、饿汉式—静态代码块方式(线程安全)
public class Singleton {
private static Singleton instance;
static {
instance = new Singleton();
}
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
3、懒汉式(线程不安全)
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
这是最基本的实现方式,第一次调用才初始化,实现了懒加载的特性。多线程场景下禁止使用,因为可能会产生多个对象,不再是单例
以上是关于java真实面试_深圳百纳九州_java的基本数据类型有几种,并且写出全部的数据类型写出常用的Linux命令finalfinalize和finnally的不同之处用java手写一个单例类的主要内容,如果未能解决你的问题,请参考以下文章
java真实面试 _ java里面如何去重_数组去重_HashSet_HashMap_List