面试d090305知识点准备01
1.1 类成员访问[jL1] 权限

1.2 写个双线程,计算50内的奇偶数

1.3 打印等腰三角形


1.4 运算符优先级
括号,非正负和自增减(右到左),乘除加减,等于不等于,逻辑与和或,然后是三木(从右到左)。最后是赋值(+=…右到左)

1.5 指出错误
int x=3;
int y=1;
if(x=y)
1.6 String/StringBuilder/StringBuffer
String:不可变字符序列(成员变量字节数组被final修饰,所以是不可变的字符串序列)

StringBuilder:可变字符序列,线程不安全
StringBuffer:可变字符序列,线程安全
1.7 以下哪个式子有可能在某个进制下成立

1.8 以下程序的输出结果为

1.9 选择:
jre 判断程序是否执行结束的标准是(所有的前台线程执行完毕)
1.10 选择:
下面哪个语句是创建数组的正确语句?( )
float f[][] = new float[][6];
1.11 下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
byte[] src,dst;
dst=new String (src,”GBK”).getbytes(“UTF-8”);
1.12 (反射)getDeclaredMethods ()的作用:

返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法, 包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
1.13 抽象类和接口的区别


1.14 Servlet的声明周期

1.15 事务隔离级别是由谁实现的?
数据库系统
1.16 关于垃圾回收机制的选择题的一些正确解释如
A: 垃圾回收在jvm中优先级相当相当低。
B:垃圾收集器(GC)程序开发者只能推荐JVM进行回收,但何时回收,回收哪些,程序员不能控制。
C:垃圾回收机制只是回收不再使用的JVM内存,如果程序有严重BUG,照样内存溢出。
D:进入DEAD的线程,它还可以恢复,GC不会回收(真正宣布一个对象死亡,至少需要经历2次标记过程。当第一次标记时会同时进行一次筛选(判断此对象是否有必要执行finalize方法)。如果对象没有覆盖该方法,就面临死亡)
1.17 final, finally和 finalize的区别
final 可以修饰类,不能被继承;修饰方法,不能被重写;修饰变量,只能赋值一次
finally 是 try 语句中的一个语句体,不能单独使用,用来释放资源
finalize 是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
1.18 Hibernate的缓存
他是持久层框架,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能,需要使用缓存机制。
1. Hibernate一级缓存又称为”session的缓存”。
session缓存内置不能被卸载,session的缓存是事务范围的缓存(session对象的生命周期通常对应一个数据库事务或者一个应用事务)。
一级缓存中,持久化类的每个实例都具有唯一的OID
2. Hibernate的二级缓存又称为”sessionFactory的缓存”。
由于sessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。
1.19 object默认的基本方法中没有copy(),含有9方法:
getClass(), clone(),
hashCode(),equals(),toString()
wait(),notify(), notifyAll(),
finalize()
1.20 异常的继承体系

jvm有一个默认的异常处理机制:控制台打印异常相关信息;程序停止
- Java中的异常被分为两大类:"编译时异常"和"运行时异常"。
- 编译时异常和运行时异常的区别
>所有的RuntimeException类及其子类被称为运行时异常
>其他的异常就是编译时异常



1.21 throws和throw的区别
throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
它表示抛出异常,由该方法的调用者来处理
throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名,表示抛出异常
1.22 final,finally和finalize的区别
final可以修饰类,不能被继承;修饰方法,不能被重写;修饰变量,只能赋值一次
finally是try语句中的一个语句体,不能单独使用,用来释放资源
finalize是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。【当对象从内存中消失会调用这个方法】
1.23 假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()
boolean isOdd = false;
for(int i=1;i<=2;++i)
{
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
-1
-2
0
1
1.24 线程


1.25 Thread.sleep() 和 Object.wait(),都可以抛出 InterruptedException。这个异常是不能忽略的,因为它是一个检查异常(checked exception)(编译时异常)
1.26 线程安全问题

1.27 HashMap和Hashtable区别


1.28 常见错题陷阱

1.29 局部内部类修饰符问题

1.30 错题

A选项中,ConcurrentHashMap 使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。
C中,应该是Arrays.asList(),其将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的内部类:

1.31 异常问题


异常分为运行时异常,非运行时异常和error,其中error是系统异常,只能重启系统解决。非运行时异常需要我们自己补获,而运行异常是程序运行时由虚拟机帮助我们补获,运行时异常包括数组的溢出,内存的溢出空指针,分母为0等!
1.32 抽象类问题


1.33 内存机制:
栈
- 存放局部变量
- 不可以被多个线程共享
- 空间连续,速度快
堆
- 存放对象
- 可以被多个线程共享
- 空间不连续,速度慢。但是灵活
方法区
- 存放类的信息:代码、静态变量、字符串常量等
- 可以被多个线程共享
- 空间不连续,速度慢。但是灵活
垃圾回收器(GC Garbage Collection):
- 程序员不能调用垃圾回收器。但是可以通过System.gc()建议回收。
- finallize:一般也不用的调
1.34 多线程之volatile关键字(记忆)
所谓 volatile的措施,就是
1. 每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。
2. volatile保证了其他线程的立即可见性,就没有保证原子性。
3.由于有些时候对 volatile的操作,不会被保存,说明不会造成阻塞。不可用与多线程环境下的计数器。
声明合法:

1.35 Math.round(-11.5) 返回最接近参数的
Math.round(-11.5)= -11(算法,+0.5取floor)
Math.round(11.5)= 12
Math类中提供了三个与取整有关的方法:ceil、floor、round
ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;
floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;
round它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
1.36 Linux的常用命令(命令区分大小写)
Netstat -nltp
Netstat -nlup
netstat命令各个参数说明如下:
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 进程的名称
-n : 不进行DNS轮询(可以加速操作)
Ps –ef (e:显示所有进程 f:全格式
ls –al |more(分页查看目录)
1.37 删除数据库中重复的记录,只保留一条
按常理来说,这个sql语句应该是:
delete tablename where id not in(select min(id) from tablename group by name,kecheng,fenshu);
这种写法在sqlserver或者oracle中是支持的,但是mysql目前是不支持的,会报类似错:You can't specify target table 'tablename' for update ,这是因为在mysql中不能同时查询一个表的数据再同时进行删除.
因此我们可以考虑用别名的方法,将子查询的结果放到一个别名中。
完整的sql语句如下:
DELETE FROM tablename where id not in (select bid from (select min(id) as bid from tablename group by name,kecheng,fenshu) as b ) ;
解释:
select bid from (select min(id) as bid from tablename group by name,kecheng,fenshu) as b
这个子查询的目的是从b中列出讲筛选结果,即bid的集合。
(select min(id) as bid from tablename group by name,kecheng,fenshu) as b
将分组结果中的最小的bid当做一个心的集合当做一个心的子表b,
注意mid(id)一定要有一个别名,这里取的是bid,作为b的一个列名,因为在上一级查询中要用到这个列名(红色标注)
1.38 代码SimpleDateFormat()


1.39 文件的移动和剪切

1.40 Idea快捷键

1.41 文件copy


1.42 集合框架图:

1.43 集合简单代码:
1.43.1 遍历


1.44 跳出双重for循环

1.45 设计模式代码

(单例的一个例子)


1.46 算法代码
1.47 数据库
1.48 SSH框架面试题总结
1.49 项目总结
1.50 字符串的反转


1.51 产生随机数

1.52 线程问题
1.53 Js

1.54 Jq

1.55 Html
第2章
2.1 hashcode相等两个类一定相等吗?equals呢?相反呢?
(这个涉及到hash表的一些问题)hashCode相等,equals也不一定相等, 两个类也不一定相等
equals相同, 说明是同一个对象, 那么hashCode一定相同
(重名的人很多, 名字相同, 但不是同一个人, hashCode就是名字, 人就是对象)
2.2 java面试题之简单介绍一下集合框架
List列表在数据结构上可以被看做线性表,常用的有ArrayList和LinkList(不常用的有Vector(类似于ArrayList)),他们的底层存储结构有所不同,一个是数组,一个是链表;这两个是注重数据存储结构的区分和数据结构数据操作方法上的区分,也就是栈和队列;即Stack和Queue,Stack是一个继承了Vector的类,Queue是一个继承于Collection的接口(因为队列可以分很多种),LinkedList实现了Deque接口,Deque继承了Queue接口,常用的有ArrayBlockingQueue(基于数组),LinkedBlockingQueue(基于链表),PriorityBlockingQueue(实现优先级排序)等。
Map是一种映射,用于存储关系型数据,保存着两种值,一组用于保存key,另外一组用于保存valeu,并且key不能重复。\
Set集合,存储的元素不能重复,其通过equals的方法,来判断元素是否重复
2.3 三个Map的区别:
HashTable和HashMap的实现原理几乎一样,差别无非是1.HashTable不允许key和value为null;HashTable是线程安全的。
ConcurrentHashMap采用了非常精妙的”分段锁”策略。
这个map的主干是segment,而segment继承了ReentrantLock,从而实现了线程安全。
2.4 hashmap和treemap什么区别?低层数据结构是什么?
HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,key的hash值是先计算key的hashcode值,
TreeMap:基于红黑二叉树的NavigableMap的实现,线程非安全,不允许null,key不可以重复,value允许重复
2.5 volatile
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。
2.6 Java中集合的初始长度和增长:
List 元素是有序的、可重复
ArrayList、Vector默认初始容量为10
Vector:线程安全,但速度慢
底层数据结构是数组结构
加载因子为1:即当 元素个数 超过 容量长度 时,进行扩容
扩容增量:原容量的 1倍
如 Vector的容量为10,一次扩容后是容量为20
ArrayList:线程不安全,查询速度快
底层数据结构是数组结构
扩容增量:原容量的 0.5倍+1
如 ArrayList的容量为10,一次扩容后是容量为16
Set(集) 元素无序的、不可重复。
HashSet:线程不安全,存取速度快
底层实现是一个HashMap(保存数据),实现Set接口
默认初始容量为16(为何是16,见下方对HashMap的描述)
加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
(为何加载因子小于1而不等于1:当向Set中添加对象始,首先调用此对象所在类的hashCode()方法。
计算此对象的哈希值,此哈希值决定了此对象在set中的位置。存储空间不是连续的)
扩容增量:原容量的 1 倍
如 HashSet的容量为16,一次扩容后是容量为32
Map是一个双列集合
HashMap:默认初始容量为16
(为何是16:16是2^4,可以提高查询效率,另外,32=16<<1 -->至于详细的原因可另行分析,或分析源代码)
加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
扩容增量:原容量的 1 倍
如 HashSet的容量为16,一次扩容后是容量为32
eg.
ArrayList list = new ArrayList(20);中的list扩充几次?
答:0次。
解析: ArrayList list=new ArrayList(); 这种是默认创建大小为10的数组,每次扩容大小为1.5倍。
ArrayList list=new ArrayList(20); 这种是指定数组大小的创建,没有扩充。
2.7 多线程通信





ReentrainLock





2.8 ThreadLocal线程池
2.9 $(document).ready和window.onload的区别
$(document).ready和window.onload都是在都是在页面加载完执行的函数,大多数情况下差别不大,但也是有区别的。
$(document).ready:是DOM结构绘制完毕后就执行,不必等到加载完毕。 意思就是DOM树加载完毕,就执行,不必等到页面中图片或其他外部文件都加载完毕。并且可以写多个.ready。
window.onload:是页面所有元素都加载完毕,包括图片等所有元素。只能执行一次。
面试d090305知识点准备01的更多相关文章
- 面试前的准备---C#知识点回顾----01
过完年来,准备找份新工作,虽然手里的工作不错,但树挪死,人挪活.咱不能一直在一个坑里生活一辈子,外面的世界毕竟是很美好的. 为了能正常的找到自己中意的工作,最近是将所有的基础知识拿出来复习了一次.仅作 ...
- java面试欠缺知识点总结
针对最近面试被问到的问题,总结自己欠缺的知识点,并要在接下来的1年内加强这些知识: Java方面:反射.线程concurrent包: Spring方面:Ioc和Aop.事务: 持久化框架:设计并实现分 ...
- Web后端 JAVAWeb面试考查知识点
面试知识点:1:简单讲一下Java的跨平台原理答:由于非跨平台的情况下,对于不同的操作系统,那么就需要开发几套不同程序代码.为了解决这个问题,java通过不同系统,不同版本,不同位数的JVM来屏蔽不同 ...
- Java学习---面试基础知识点总结
Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线 ...
- 【Android 面试基础知识点整理】
针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...
- 两年经验拿到蚂蚁金服,字节offer,附上金九银十BAT面试核心知识点整理
前言 我自己是本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找 ...
- C++及数据结构笔试面试常见知识点总结
一些常考的基础知识点个人总结,大神勿喷,欢迎指正. 1.广义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表. 2.构造函数不能声明为虚函数. 构造函数为什么不能 ...
- Android工程师面试准备知识点
听+7哥说,把下面的全弄懂,面试必过,所以我就试着去把所有题目补充了一下,各位能耐的网友们,如果有吐槽或者补充的尽管给我留言,在这里谢过大家了. 1. android的多线程如何通信 答:Andr ...
- Redis学习---面试基础知识点总结
[学习参考] https://www.toutiao.com/i6566017785078481422/ https://www.toutiao.com/i6563232898831352323/ 0 ...
随机推荐
- vscode 小笔记
用户设置: { "git.ignoreMissingGitWarning": true, "workbench.statusBar.feedback.visible&qu ...
- 设计模式 之 《建造者模式(Builder)》
#ifndef __BUILDER_MODEL__ #define __BUILDER_MODEL__ #include <string> #include <vector> ...
- FFMPEG-AVFilter研究
FFMPEG中的libswscale是做像素转换的,但是对于一些复杂的操作,比如添加水印等,这个库就不行了,这时候就要说一下另外一个AVFilter.AVFilter完全可以替代libswscale的 ...
- bzoj 2084: Antisymmetry 回文自动机
题目: Description 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作"反对称"字符串.比如00001111和010101就是反对称的 ...
- 系列文章--Node.js学习笔记系列
Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...
- FPGA, Float 32bit, multiplyier by Verilog
1, FPGA device, using three 18bit x 18 bit multiplier to implement 32bit float multiplier 2, compari ...
- oracle--分页过程demo1
oracle分页过程demo1: --ROWNUM用法 select o.*,rownum rn from (select * from emp) o where rownum<=10; sel ...
- C#设计模式(10)——组合模式
一.概念 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦. 二.组 ...
- 新版 Spring下载方法
1.百度 Spring 打开官方网站 http://spring.io/ 2.======================================= 3.================= ...
- sharepoint Foundation 2013 error
安装必须软件时提示以下错误 错误提示日志: 015-05-28 10:40:25 - Request for install time of 应用程序服务器角色.Web 服务器(IIS)角色2015- ...