系列文章目录
文章目录
- 系列文章目录
- 一、java的基本数据类型有几种,并且写出全部的数据类型
- 二、写出常用的Linux命令
- 三、final、finalize和finnally的不同之处
- 四、 创建线程有哪几种方式?
- 五、权限怎么设计,几个表可以完成
- 六、[1,a,3,5,b,9,c] 和 [2,4,5,6,c,8,9]代码实现最快找出相同数
- 七、spring有哪两大机制,两大机制的原理是什么,并且列举出这两大机制的应用场景
- 八、数据库的四大特征是什么
- 九、sql的优化方式有哪些
- 十、用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
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
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;
}
}
这是最基本的实现方式,第一次调用才初始化,实现了懒加载的特性。多线程场景下禁止使用,因为可能会产生多个对象,不再是单例
|