Java严选
1,假如有两个线程,一个线程A,一个线程B都会访问一个加锁方法,可能存在并发情况,但是线程B访问频繁,线程A访问次数很少,问如何优化。(然后面试官说有了解过重度锁和轻度锁吗)
a,竞争资源不激烈,选择Synchronized:
在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,
但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,但是ReetrantLock的性能能维持常态;
b,优化,假设线程A和B不会并发访问,如果发生了并发,再膨胀为重量级锁:
轻量级锁的核心思想就是“被加锁的代码不会发生并发,如果发生并发,那就膨胀成重量级锁。
http://tech.youzan.com/load-balancing-algorithm/
4.设计一个分布式负载均衡缓冲系统,如何快速定位到是那个服务器
(使用key分段、一致性hash:http://blog.csdn.net/sparkliang/article/details/5279393 )
6.HashMap高并发情况下会出现什么问题
高并发场景下HashMap在扩容时可能会形成闭环,导致死循环。
http://www.iteye.com/topic/962172
7,ConcurrentHashMap如何扩容,内部结构?
如何扩容?
扩容的时候首先会创建一个两倍于原容量的数组,然后将原数组里的元素进行再hash后插入到新的数组里。
为了高效ConcurrentHashMap不会对整个容器进行扩容,而只对某个segment进行扩容
http://www.infoq.com/cn/articles/ConcurrentHashMap
数据库SQL优化大总结之 百万级数据库优化方案:
http://database.51cto.com/art/201407/445934.htm
9,用过哪些容器?(tomcat)对比过Tomcat与其他服务器的区别吗?比如nginx?
- 动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。
- 负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理。
10,HashMap的内部实现
在分析jdk1.8后的HashMap源码时,HashMap的数据结构(数组+链表+红黑树),桶中的结构可能是链表,也可能是红黑树,红黑树的引入是为了提高效率。
HashMap数据结构:
http://www.cnblogs.com/huaizuo/p/5371099.html

11,ConcurrentHashMap内部是如何实现的?每个segment是个什么数据结构?
12.tomcat均衡方式 ,netty
Netty是什么?
本质:JBoss做的一个Jar包
目的:快速开发高性能、高可靠性的网络服务器和客户端程序
优点:提供异步的、事件驱动的网络应用程序框架和工具
通俗的说:一个好使的处理Socket的东东
http://lippeng.iteye.com/blog/1907279
http://blog.csdn.net/kobejayandy/article/details/11493717
读取log中的IP记录,并统计每个IP的访问次数,以5分钟为分隔,超过100的IP就是爬虫IP,没有超过的在5分钟的时候清零,继续统计。
15.对后台的优化有了解吗?比如负载均衡。
Nginx+Tomcat负载均衡: http://blog.csdn.net/wang379275614/article/details/47778201
异步处理(消息缓冲服务器): http://blog.csdn.net/shaobingj126/article/details/50585035
缓存(Redis,Memcache),NoSQL,数据库优化,存储索引优化。
16.DNS均衡
负载均衡之DNS域名解析 : http://blog.csdn.net/cywosp/article/details/38017027
17.nginx事件处理模型
http://blog.csdn.net/u013009575/article/details/17471615
19.int i=0; Integer i1=0; Integer i2=new Integer(0); Integer i3=new Integer(0);
System.out.println(i==i1);//true 指向堆中的基本类型时,直接取到其值。
System.out.println(i==i1);//true指向堆中的基本类型时,直接取到其值。
System.out.println(i1==i2);//false指向堆中的 对象 类型时,直接取到其地址。
System.out.println(i3==i2);//false指向堆中的 对象 类型时,直接取到其地址。
System.out.println(i3.equals(i2));//true指向堆中的 对象 类型时,equals取到其值。
Java严选的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 严选 Android 路由框架优化(下篇)
3 router 框架优化 3.1 apt 生成代码量过大问题优化 思考框架本身,其实可以发现仅有 router 映射表是需要根据注解编译生成的,其他的全部代码都是固定代码,完全可以 sdk 中直接编 ...
- 严选 Android 路由框架优化(上篇)
0 背景 早前严选 Android 工程,使用原生 Intent 方式做页面跳转,为规范参数传递,做了编码规范,使用静态方法的方式唤起 Activity public static void star ...
- 2020年JAVA大厂笔经面经
个人简介 Java后台开发方向. 非计算机专业硕士,专业涉及到一些开发. 实验室项目主要是Java Web系统,挖掘小亮点. 无实习经验. 闲话唠嗑 回顾这几个月,宛若梦一场. 一开始心态不好 ...
- 感觉学java学到自己的瓶颈期了,各种框架乱七八糟,感觉好乱。该怎么办!?
通常我们都会有这样的一个疑问! 解决办法 这时候,你需要的是分清条理,重整知识架构 GitHub开源社区有一个这样的项目,我觉得非常好,很适合Java有基础但是想进阶提升的人. 项目简介 本期介绍的开 ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
随机推荐
- 题解 [SHOI2010]最小生成树
题面 解析 看上去是黑题啊! 实际上也就是道网络流最大流. 当然,我们也知道网络流最关键的是建图. 首先,分析一下题目: 题目要求在操作后使给定的边lab一定在最小生成树上, 求最小的操作数. 先设 ...
- iis与编辑
hostname:域名initializationPage:对应域名下任意可访问action
- BZOJ 1444: [Jsoi2009]有趣的游戏 AC自动机+概率与期望+矩阵乘法
这道题还比较友好~首先,构建出来 $AC$ 自动机,那么我们要求的就是从 $0$ 号点走无限次走到一个终止节点的概率. 考虑构建转移矩阵 $M,$ $M_{i,j}$ 表示节点 $i$ 转移到节点 $ ...
- Into Blocks (easy version)
G1 - Into Blocks (easy version) 参考:Codeforces Round #584 - Dasha Code Championship - Elimination Rou ...
- CodeForces 137A
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description Polyca ...
- [GIT]提交后版本恢复
如果在回退以后又想再次回到之前的版本,可以用relog查看commit id,再使用reset设置. 1.执行 relog 后: 展示的最前面的部分就是commit id,后面会用来作为恢复的 ...
- SpringSecurity——默认过滤器链
介绍Spring Security默认的过滤器链,介绍顺序按照过滤器在过滤器链中的顺序排序 1.WebAsyncManagerIntegrationFilter 将Security上下文与Spring ...
- CentOS7 磁盘管理
一.磁盘查看 查看所有磁盘 ll /dev/sd* 不带数字的为磁盘,带数字的为磁盘的分区 查看所有磁盘的分区情况 fdisk -l 结果 WARNING: fdisk GPT support is ...
- 一、基础篇--1.2Java集合-HashMap死循环问题
为什么HashMap会出现死循环 首先,我们知道java的HashMap不是线程安全的.多线程下应该使用ConcurrentHashMap. HashMap底层是基于动态数组和单向链表(JDK1.7, ...
- RestAssured
配置MAVEN <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-ass ...