<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>waimv.com &#187; 面试</title>
	<atom:link href="http://www.waimv.com/category/%e9%9d%a2%e8%af%95/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.waimv.com</link>
	<description></description>
	<lastBuildDate>Fri, 09 Nov 2018 10:41:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Java面试题</title>
		<link>http://www.waimv.com/java/338/</link>
		<comments>http://www.waimv.com/java/338/#comments</comments>
		<pubDate>Thu, 25 Oct 2018 09:09:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[面试]]></category>

		<guid isPermaLink="false">http://www.waimv.com/?p=338</guid>
		<description><![CDATA[电话一面 1、自我介绍、自己做的项目和技术领域 2、项目中的监控：监控指标常见的有哪些？ 3、微服务涉及到的技术以及需要注意的问题有哪些？ 4、注册中心你了解了哪些？ 5、consul 的可靠性你了解吗？ 6、consul 的机制你有没有具体深入过？有没有和其他的注册中心对比过？ 7、项目用 Spring 比较多，有没有了解 Spring 的原理？AOP 和 IOC 的原理 8、Spring Boot除了自动配置，相比传统的 Spring 有什么其他的区别？ 9、Spring Cloud 有了解多少？ 10、Spring Bean 的生命周期 11、HashMap 和 hashTable 区别？ HashMap 是线程不安全的，HashTable是线程安全的。 Jdk8后，HashMap是数组加链表加红黑树，HashTable是数据加链表 HashMap 的key和value均可以为Null,HashTable均不能为Null HashMap默认桶的容量大小是16，HashTable是11 HashTable之所以是线程安全的，是因为在put和get方法上加了synchronized方法。 12、Object 的 hashcode 方法重写了，equals 方法要不要改？ 需要改写，如果不改写equals，会导致对象比较产生不一致，特别会影响通过equals比较的八大包装对象，例如当equals返回true，而 hashcode不一致，当相同的对象写入HashSet或者Map的时候，会存储两个值一样的对象. 13、Hashmap 线程不安全的出现场景 当HashMap有hash冲突时候，就会在Entry后面已链表的方式存放，jdk7以后根据长度会变换成红黑树，当多线程同时修改时候链表修改会导致数据丢失。 当hash冲突变多后，就会存在查询效率变低，这个时候HashMap会把数据resize，之前的数据重新移动到一个新的数组中，在多线程环境中每个线程同时在reszie,也存在数据复制丢失的风险。 14、线上服务 CPU 很高该怎么做？有哪些措施可以找到问题 1 如果多服务部署，Top -c [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<div id="_mcePaste">
<div id="_mcePaste">电话一面</div>
<div id="_mcePaste">1、自我介绍、自己做的项目和技术领域</div>
<div id="_mcePaste">2、项目中的监控：监控指标常见的有哪些？</div>
<div id="_mcePaste">3、微服务涉及到的技术以及需要注意的问题有哪些？</div>
<div id="_mcePaste">4、注册中心你了解了哪些？</div>
<div id="_mcePaste">5、consul 的可靠性你了解吗？</div>
<div id="_mcePaste">6、consul 的机制你有没有具体深入过？有没有和其他的注册中心对比过？</div>
<div id="_mcePaste">7、项目用 Spring 比较多，有没有了解 Spring 的原理？AOP 和 IOC 的原理</div>
<div id="_mcePaste">8、Spring Boot除了自动配置，相比传统的 Spring 有什么其他的区别？</div>
<div id="_mcePaste">9、Spring Cloud 有了解多少？</div>
<div id="_mcePaste">10、Spring Bean 的生命周期</div>
<div id="_mcePaste">11、HashMap 和 hashTable 区别？</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>HashMap 是线程不安全的，HashTable是线程安全的。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>Jdk8后，HashMap是数组加链表加红黑树，HashTable是数据加链表</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>HashMap 的key和value均可以为Null,HashTable均不能为Null</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>HashMap默认桶的容量大小是16，HashTable是11</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>HashTable之所以是线程安全的，是因为在put和get方法上加了synchronized方法。</div>
<div id="_mcePaste">12、Object 的 hashcode 方法重写了，equals 方法要不要改？</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>需要改写，如果不改写equals，会导致对象比较产生不一致，特别会影响通过equals比较的八大包装对象，例如当equals返回true，而 hashcode不一致，当相同的对象写入HashSet或者Map的时候，会存储两个值一样的对象.</div>
<div id="_mcePaste">13、Hashmap 线程不安全的出现场景</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>当HashMap有hash冲突时候，就会在Entry后面已链表的方式存放，jdk7以后根据长度会变换成红黑树，当多线程同时修改时候链表修改会导致数据丢失。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>当hash冲突变多后，就会存在查询效率变低，这个时候HashMap会把数据resize，之前的数据重新移动到一个新的数组中，在多线程环境中每个线程同时在reszie,也存在数据复制丢失的风险。</div>
<div id="_mcePaste">14、线上服务 CPU 很高该怎么做？有哪些措施可以找到问题</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>1 如果多服务部署，Top -c 找到最耗费CPU的进程 键入P</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>2 Top -Hp pid 找到最耗费CPU的线程 键入P</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>3 将线程pid转换为16进制 printf “%x\n” 10804</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>4 查看堆栈 找到线程在干嘛 jstack 10765 | grep ‘0x2a34’ -C5 &#8211;color</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>5 定位到具体执行的代码，解决问题。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste">15、JDK 中有哪几个线程池？顺带把线程池讲了个遍</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>JDK自带的线程池工厂类 Executors,可以创建4中类型的线程池</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>1 newfixedThreadPool 创建固定长度的线程池，当线程个数达到最大个数时，新任务需要在队列中等待。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>2 newSingleThreadExecutor 创建1个线程的线程池，当线程异常退出后，会再创建一个线程放到线程池里。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>3 newScheduledThreadPool 延时多少秒后开始执行</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>4 newCachedThreadPool 可缓存的线程池，当线程池的大小超过可处理任务的数量，就回收部分空闲的线程，当任务增加，线程池又会新建线程，直到达到操作系统规定可以创建的最大线程数。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>在实际环境中，要避免用Executors直接创建线程池，原因是此方式创建的线程池都是用的默认参数，而我们常常会忽略这些参数值，导致存在资源浪费和不可控因素，推荐用 ThreadPoolExecutor 来创建线程池。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>说明：Executors 各个方法的弊端：</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>1）newFixedThreadPool 和 newSingleThreadExecutor:</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>主要问题是堆积的请求处理队列可能会耗费非常大的内存，甚至 OOM。</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>2）newCachedThreadPool 和 newScheduledThreadPool:</div>
<div id="_mcePaste"><span style="white-space: pre;"> </span>主要问题是线程数最大数是 Integer.MAX_VALUE，可能会创建数量非常多的线程，甚至 OOM。</div>
<div id="_mcePaste">16、SQL 优化的常见方法有哪些</div>
<div id="_mcePaste">17、SQL 索引的顺序，字段的顺序</div>
<div id="_mcePaste">18、查看 SQL 是不是使用了索引？（有什么工具）</div>
<div id="_mcePaste">19、TCP 和 UDP 的区别？TCP 数据传输过程中怎么做到可靠的？</div>
<div id="_mcePaste">20、说下你知道的排序算法吧</div>
<div id="_mcePaste">21、查找一个数组的中位数？</div>
<div id="_mcePaste">电话二面（85 分钟）</div>
<div id="_mcePaste">1、自我介绍、工作经历、技术栈</div>
<div id="_mcePaste">2、项目中你学到了什么技术？（把三项目具体描述了很久）</div>
<div id="_mcePaste">3、微服务划分的粒度</div>
<div id="_mcePaste">4、微服务的高可用怎么保证的？</div>
<div id="_mcePaste">5、常用的负载均衡，该怎么用，你能说下吗？</div>
<div id="_mcePaste">6、网关能够为后端服务带来哪些好处？</div>
<div id="_mcePaste">7、Spring Bean 的生命周期</div>
<div id="_mcePaste">8、xml 中配置的 init、destroy 方法怎么可以做到调用具体的方法？</div>
<div id="_mcePaste">9、反射的机制</div>
<div id="_mcePaste">10、Object 类中的方法</div>
<div id="_mcePaste">11、hashcode 和 equals 方法常用地方</div>
<div id="_mcePaste">12、对象比较是否相同</div>
<div id="_mcePaste">13、hashmap put 方法存放的时候怎么判断是否是重复的</div>
<div id="_mcePaste">14、Object toString 方法常用的地方，为什么要重写该方法</div>
<div id="_mcePaste">15、Set 和 List 区别？</div>
<div id="_mcePaste">16、ArrayList 和 LinkedList 区别</div>
<div id="_mcePaste">17、如果存取相同的数据，ArrayList 和 LinkedList 谁占用空间更大？</div>
<div id="_mcePaste">18、Set 存的顺序是有序的吗？</div>
<div id="_mcePaste">19、常见 Set 的实现有哪些？</div>
<div id="_mcePaste">20、TreeSet 对存入对数据有什么要求呢？</div>
<div id="_mcePaste">21、HashSet 的底层实现呢</div>
<div id="_mcePaste">22、TreeSet 底层源码有看过吗？</div>
<div id="_mcePaste">23、HashSet 是不是线程安全的？为什么不是线程安全的？</div>
<div id="_mcePaste">24、Java 中有哪些线程安全的 Map？</div>
<div id="_mcePaste">25、Concurrenthashmap 是怎么做到线程安全的？</div>
<div id="_mcePaste">26、HashTable 你了解过吗？</div>
<div id="_mcePaste">27、如何保证线程安全问题？</div>
<div id="_mcePaste">28、synchronized、lock</div>
<div id="_mcePaste">29、volatile 的原子性问题？为什么 i++ 这种不支持原子性？从计算机原理的设计来讲下不能保证原子性的原因</div>
<div id="_mcePaste">30、happens before 原理</div>
<div id="_mcePaste">31、cas 操作</div>
<div id="_mcePaste">32、lock 和 synchronized 的区别？</div>
<div id="_mcePaste">33、公平锁和非公平锁</div>
<div id="_mcePaste">34、Java 读写锁</div>
<div id="_mcePaste">35、读写锁设计主要解决什么问题？</div>
<div id="_mcePaste">36、你项目除了写 Java 代码，还有前端代码，那你知道前端有哪些框架吗？</div>
<div id="_mcePaste">37、MySQL 分页查询语句</div>
<div id="_mcePaste">38、MySQL 事务特性和隔离级别</div>
<div id="_mcePaste">39、不可重复读会出现在什么场景？</div>
<div id="_mcePaste">40、sql having 的使用场景</div>
<div id="_mcePaste">41、前端浏览器地址的一个 http 请求到后端整个流程是怎么样？能够说下吗？</div>
<div id="_mcePaste">42、http 默认端口，https 默认端口</div>
<div id="_mcePaste">43、DNS 你知道是干嘛的吗？</div>
<div id="_mcePaste">44、你们开发用的 ide 是啥？你能说下 idea 的常用几个快捷键吧？</div>
<div id="_mcePaste">45、代码版本管理你们用的是啥？</div>
<div id="_mcePaste">46、git rebase 和 merge 有什么区别？</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.waimv.com/java/338/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
