1. HashMap不支持同步,Hashtable、synchronizedMap、concurrentHashMap同步怎么做的?
· HashMap实现同步的方法:调用Collections的静态方法Collections.synchronizedMap(Map map);,返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
· ConcurrentHashMap提供了和Hashtable以及SynchronizedMap中所不同的锁机制。Hashtable中采用的锁机制是一次锁住整个hash表,从而同一时刻只能由一个线程对其进行操作;而ConcurrentHashMap中则是一次锁住一个桶。
· 在迭代方面,ConcurrentHashMap使用了一种不同的迭代方式。在这种迭代方式中,当iterator被创建后集合再发生改变就不再是抛出ConcurrentModificationException,取而代之的是在改变时new新的数据从而不影响原有的数据,iterator完成后再将头指针替换为新的数据,这样iterator线程可以使用原来老的数据,而写线程也可以并发的完成改变。
HashMap的底层实现,使用的数据结构是什么?
多线程编程的要点有什么?怎么保证线程间的数据访问的安全性?
线程间通信与进程间通信方式
静态编译与动态编译
· 静态编译:在编译时确定类型,绑定对象,即通过。
· 动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。
Java反射原理(区分静态和动态),注解原理
指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制.
· 反射机制的应用:
生成动态代理,面向切片编程
· 反射机制的原理:
i. 首先明确的概念: 一切皆对象----类也是对象.所有的类都继承java.lang.class
ii. 通过反射类中的方法获取类中的成员变量和方法 :
iii. 其次明白加载: 当Animal.class在硬盘中时,是一个文件,当载入到内存中,可以认为是一个对象,是java.lang.class的对象.
· 好文分享:http://www.cnblogs.com/jqyp/archive/2012/03/29/2423112.html
类加载过程
Spring中一个bean的装配过程是怎样的
首先通过自动扫描或者手动装载的方法获取bean的依赖关系,然后通过依赖注入将bean装配到spring容器中
final、finalize 和 finally 的不同之处?
AutoWired和Resources注解的比较
设计模式了解什么?
单例模式怎么实现的?饿汉式单例模式下,为什么声明为静态单例对象,这时的static作用是什么?
单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为, 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收,
Public class Singleton{
//
类加载时就初始化
private static final
Singleton
instance=
newSingleton(
);
private Singleton()
{}
public static
Singleton
getInstance(){
return
instance;
}
}
单例模式典型的应用场景
1. 网站的计数器,一般也是采用单例模式实现,否则难以同步。
2. 应用程序的日志应用,一般都何用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
3. Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源。
4. 数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因为如果用单例模式来维护,就可以大大降低这种损耗。
5. 多线程的线程池的设计一般也是采用单例模式,这是由于线程池要方便对池中的线程进行控制。
6. 操作系统的文件系统,也是大的单例模式实现的具体例子,一个操作系统只能有一个文件系统。
单例模式应用的场景一般发现在以下条件下:
(1)资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。
(2)控制资源的情况下,方便资源之间的互相通信。如线程池等。
static的作用
G1垃圾收集器是什么?有垃圾收集器还会导致OOM吗?
递归与迭代的区别
1. 递归
· 递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.
一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.
· 使用递归要注意的有两点:
· 递归分为两个阶段:
· 递归的缺点:由于递归引起一系列的函数调用,并且有可能会有一系列的重复计算,递归算法的执行效率相对较低.
2. 迭代
· 迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B.
递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.
· 好文分享:http://blog.csdn.net/swliao/article/details/5337896
MemCache
· Memcached介绍
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
· 工作原理
Memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web等应用的速度、提高可扩展性。下图展示了memcache与数据库端协同工作情况:
1. 检查用户请求的数据是缓存中是否有存在,如果有存在的话,只需要直接把请求的数据返回,无需查询数据库。
2. 如果请求的数据在缓存中找不到,这时候再去查询数据库。返回请求数据的同时,把数据存储到缓存中一份。
3. 保持缓存的“新鲜性”,每当数据发生变化的时候(比如,数据有被修改,或被删除的情况下),要同步的更新缓存信息,确保用户不会在缓存取到旧的数据。
redis原理,redis的常用数据类型
· Redis介绍
Redis 是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,数据都是缓存在内存中。
· 好文分享:http://www.cnblogs.com/work115/p/5584646.html
linux怎么查看端口和系统负载情况
netstat的原理
缺页中断是什么
抖动是什么,原因是什么,怎么解决
常见的页面置换算法有哪些
Linux系统的特点是什么?
进程是什么?线程是什么?两者区别,什么是多进程和多线程?为什么要有多进程和多线程?
说一说linux的常用命令
操作系统是在慕课网上看的是北京大学陈向群老师讲的《操作系统原理》
项目介绍
项目中遇到的最大困难是什么?怎么解决的?
如何准备招聘会的?看什么书,做什么题?做题形式,做题内容
http请求的过程
访问百度的过程
HTTP协议
404错误是什么?为什么404是服务器找不到资源却是客户端报错呢?
数据库引擎的对比
mysql默认隔离级别
mysql 的隔离级别有四种:读未提交,读已提交,可重复读,可串行化。大多数的数据库系统的默认事务隔离级别都是:Read committed,而mysql的默认事务隔离级别是:Repeatable Read
mysql是用共享锁还是排他锁(属于行锁)
mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流。
· 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。
· 排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他锁并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据进行读取和修改。
mysqlInnoDB引擎默认的修改数据语句
B+,B-树
将一个数组的奇数和偶数分开
已知前序和中序求后序
上台阶(剑指offer原题)
洗牌算法
链表反转
二叉树的层序遍历(画图演示)
二叉树的后序遍历,递归,非递归两种
在二叉搜索树中查找给定的值
三窝狼过河
从10亿个手机号码中找一个给定号码是否存在?要求快速(布隆过滤器)
为什么选择我们公司?为什么做软件开发?(和专业不相符)
有什么问题要问?
公司对应届生的要求是什么?对我的建议在公司的工作体验是什么?
和公司相关的问题都可以提。
美团今年确实是扩招,要大量扩大业务范围,如果提前准备好,最后进去的机会很大。很可惜,我是提前批的电话面试,当时还是8月底,9月初,第一个秋招面试的机会,而且电话面确实不如现场面的好,所以两面之后就没有下方了。