邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

Java面试题目

====简历篇====

请自我介绍
请介绍项目
====基础篇====
====基本功====
面向对象的特征
final, finally, finalize 的区别
int 和 Integer 有什么区别
重载和重写的区别
抽象类和接口有什么区别
说说反射的用途及实现
说说自定义注解的场景及实现
HTTP 请求的 GET 与 POST 方式的区别
session 与 cookie 区别
session 分布式处理
JDBC 流程
MVC 设计思想
equals 与 == 的区别
====集合====
List 和 Set 区别
List 和 Map 区别
Arraylist 与 LinkedList 区别
ArrayList 与 Vector 区别
HashMap 和 Hashtable 的区别
HashSet 和 HashMap 区别
HashMap 和 ConcurrentHashMap 的区别
HashMap 的工作原理及代码实现
ConcurrentHashMap 的工作原理及代码实现
====线程====
创建线程的方式及实现
sleep() 、join()、yield()有什么区别
说说 CountDownLatch 原理
说说 CyclicBarrier 原理
说说 Semaphore 原理
说说 Exchanger 原理
说说 CountDownLatch 与 CyclicBarrier 区别
ThreadLocal 原理分析
讲讲线程池的实现原理
线程池的几种方式与使用场景
线程的生命周期
====锁机制====
说说线程安全问题
volatile 实现原理
synchronize 实现原理
synchronized 与 lock 的区别
CAS 乐观锁
ABA 问题
乐观锁的业务场景及实现方式
====核心篇====
====数据存储====
MySQL 索引使用的注意事项
说说反模式设计
说说分库与分表设计
分库与分表带来的分布式困境与应对之策
说说 SQL 优化之道
MySQL 遇到的死锁问题
存储引擎的 InnoDB 与 MyISAM
====数据库索引的原理====
为什么要用 B-tree
聚集索引与非聚集索引的区别
limit 20000 加载很慢怎么解决
选择合适的分布式主键方案
选择合适的数据存储方案
ObjectId 规则
聊聊 MongoDB 使用场景
====倒排索引====
聊聊 ElasticSearch 使用场景
====缓存使用====
Redis 有哪些类型
Redis 内部结构
Redis 内存淘汰机制
聊聊 Redis 使用场景
Redis 持久化机制
Redis 集群方案与实现
Redis 为什么是单线程的
缓存崩溃
缓存降级
使用缓存的合理性问题
====消息队列====
消息队列的使用场景
消息的重发补偿解决思路
消息的幂等性解决思路(已解答,待补充)
消息的堆积解决思路
自己如何实现消息队列
如何保证消息的有序性
====框架篇====
====Spring====
BeanFactory 和 ApplicationContext 有什么区别
Spring Bean 的生命周期
Spring IOC 如何实现
说说 Spring AOP
Spring AOP 实现原理
动态代理(cglib 与 JDK)
Spring 事务实现方式
Spring 事务底层原理
如何自定义注解实现功能
Spring MVC 运行流程
Spring MVC 启动流程
Spring 的单例实现原理
Spring 框架中用到了哪些设计模式
Spring 其他产品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)
====Netty====
为什么选择 Netty
说说业务中,Netty 的使用场景
原生的 NIO 在 JDK 1.7 版本存在 epoll bug
什么是TCP 粘包/拆包
TCP粘包/拆包的解决办法
Netty 线程模型
说说 Netty 的零拷贝
Netty 内部执行流程
Netty 重连实现
====微服务篇====
====微服务====
前后端分离是如何做的
如何解决跨域
微服务哪些框架
你怎么理解 RPC 框架
说说 RPC 的实现原理
说说 Dubbo 的实现原理
你怎么理解 RESTful
说说如何设计一个良好的 API
如何理解 RESTful API 的幂等性
如何保证接口的幂等性
说说 CAP 定理、 BASE 理论
怎么考虑数据一致性问题
说说最终一致性的实现方案
你怎么看待微服务
微服务与 SOA 的区别
如何拆分服务
微服务如何进行数据库管理
如何应对微服务的链式调用异常
对于快速追踪与定位问题
微服务的安全
====分布式====
谈谈业务中使用分布式的场景
Session 分布式方案
分布式锁的场景
分布是锁的实现方案
分布式事务
集群与负载均衡的算法与实现
说说分库与分表设计
分库与分表带来的分布式困境与应对之策
====安全问题====
安全要素与 STRIDE 威胁
防范常见的 Web 攻击
服务端通信安全攻防
HTTPS 原理剖析
HTTPS 降级攻击
授权与认证
基于角色的访问控制
基于数据的访问控制
性能优化
性能指标有哪些
如何发现性能瓶颈
性能调优的常见手段
说说你在项目中如何进行性能调优
====工程篇====
====需求分析====
你如何对需求原型进行理解和拆分
说说你对功能性需求的理解
说说你对非功能性需求的理解
你针对产品提出哪些交互和改进意见
你如何理解用户痛点
====设计能力====
说说你在项目中使用过的 UML 图
你如何考虑组件化
你如何考虑服务化
你如何进行领域建模
你如何划分领域边界
说说你项目中的领域建模
说说概要设计
====设计模式====
你项目中有使用哪些设计模式
说说常用开源框架中设计模式使用分析
说说你对设计原则的理解
23种设计模式的设计理念
设计模式之间的异同,例如策略模式与状态模式的区别
设计模式之间的结合,例如策略模式+简单工厂模式的实践
设计模式的性能,例如单例模式哪种性能更好。
====业务工程====
你系统中的前后端分离是如何做的
说说你的开发流程
你和团队是如何沟通的
你如何进行代码评审
说说你对技术与业务的理解
说说你在项目中经常遇到的 Exception
说说你在项目中遇到感觉最难Bug,怎么解决的
说说你在项目中遇到印象最深困难,怎么解决的
你觉得你们项目还有哪些不足的地方
你是否遇到过 CPU 100% ,如何排查与解决
你是否遇到过 内存 OOM ,如何排查与解决
说说你对敏捷开发的实践
说说你对开发运维的实践
介绍下工作中的一个对自己最有价值的项目,以及在这个过程中的角色
====软实力====
说说你的亮点
说说你最近在看什么书
说说你觉得最有意义的技术书籍
说说个人发展方向方面的思考
说说你认为的服务端开发工程师应该具备哪些能力
说说你认为的架构师是什么样的,架构师主要做什么
说说你所理解的技术专家
====HR 篇====
你为什么离开之前的公司
你为什么要进我们公司
说说职业规划
你如何看待加班问题
谈一谈你的一次失败经历
你觉得你最大的优点是什么
你觉得你最大的缺点是什么
你在工作之余做什么事情
你为什么认为你适合这个职位
你觉得自己那方面能力最急需提高
你来我们公司最希望得到什么
你希望从这份工作中获得什么
你对现在应聘的职位有什么了解
您还有什么想问的
你怎么看待自己的职涯
谈谈你的家庭情况
你有什么业余爱好
你计划在公司工作多久

金庸小说纪年

527年 南北朝时期,印度高僧菩提达摩来到中国,在嵩山少林寺面壁九年,创立中国禅宗

536年 达摩去世

554年 西魏宇文泰攻破江陵城(今荆州),元帝肃绎留下宝藏在天守室,连城诀宝藏来源于此

960年 赵匡胤陈桥兵变,建立宋朝

1060年 萧峰出生

1064年 慕容复出生

1065年 波斯"山中老人"霍山制圣火令持平生武功精要,镌刻于圣火令之上

1094年 大理段正明禅位侄子段誉。同年萧峰劝阻辽帝侵宋,自尽于雁门关外

1112年 王重阳出生

1115年 黄裳雕版印行万寿道藏,并向明朝挑战

1140年 独孤求败创独孤九剑第九式破气式

1141年 岳飞狱中撰写《武穆遗书》

1162年 柯镇恶出生

1163年 老顽童周伯通出生

1164年 黄裳完成九阴真经,洪七公出生

1168年 欧阳锋出生

1171年 黄药师出生

1183年 金轮法王出生

1196年 王重阳再入古墓,于棺上刻下部分九阴真经,留"玉女心经,欲胜全真;重阳一生,不弱与人"。同年与无名僧斗酒参阅九阴创九阳;同年南宋宦官在宫中创葵花宝典。

1205年 郭靖杨康出生

1206年 成吉思汗建立蒙古汗国

1208年 黄蓉出生

1222年 小龙女出生 

1225年 穆念慈比武招亲,1226年杨过出生

1227年 第二次华山论剑。同年成吉思汗去世

1235年 明教高手参考五代十国时期,武林高手慕容龙城的"斗转星移"。创出威力巨大的"乾坤大挪移"神功,遂为镇教之宝

1243年 洪七公、欧阳锋去世

1243年 郭襄出生 杨过断臂,初入独孤求败剑冢

1247年 张三丰出生

1259年 杨过飞石击毙蒙哥大汗 第三次华山论剑

1262年 郭襄游少林

1273年 郭靖和黄蓉在襄阳牺牲

1336年 谢逊和张翠山夫妇至冰火岛

1337年 张三丰90大寿,张无忌出生

1339年 周芷若出生

1340年 汝阳王女儿敏敏特穆尔出生,元帝封其 邵敏郡主

1341年 小昭出生

1346年 张三丰百岁大寿,张翠山殷素素自尽

1351年 张无忌得九阳神功

1357年 六大派围攻光明顶,张无忌任明教教主,张三丰创太极神功

1358年 小昭远走波斯

1360年 张无忌隐退,光明左使杨逍继任明教第三十五代教主

1365年 明教光明右使范遥参考北宋年间的两大神功"北冥神功"和"化功大法",创造出威力极大的吸星大法

1368年 明朝灭元朝

1372年 杨逍去世,明朝内部争权夺利,陷入内战,加上外部朱元璋打压,明教日渐式微。教中高手改组明教,遂为"日元神教"

1400年 南少林寺得葵花宝典

1401年 月肃蔡子峰偷录葵花宝典,渡元禅师习辟邪剑法。

1458年 武当派开山祖师张三丰仙逝,享年212岁

1478年 令狐冲出生

1486年 任盈盈出生

1493年 东方不败篡夺日月神教教主之位,任我行被囚地牢。

1503年 余沧海灭福威镖局

1504年 令狐冲练成独孤九剑

1505年 任我行重夺日月神教教主之位,次年去世

1509年 令狐冲 任盈盈喜结良缘

1610年 金蛇郎君夏雪宜惨遭灭门

1643年 袁承志被推举为7省江湖首领,率众人摧毁西洋红衣大炮

1644年 袁承志助阿九(鹿鼎记-九难)挫败成王与曹化淳篡位阴谋。同年,李自成攻入北京,明亡。吴三桂投清。袁承志、夏青青率亲友部属避居海外渤泥国(新加坡)

第一次经历公司裁员
第一次经历公司裁员,心情是复杂的,我们科技事业部的技术算是一个没留,服务器月底就全部到期了,到时候代码和所有的数据就会全部over了。早上刚知道要裁员的时候,以为至少会留一个服务端,而且感觉也不会那么快,至少得到月底才会见分晓吧,没想到下午的时候就来找我们谈话了,说是我们的工资结到今天。有点懵。我还没做好找工作的准备,这段时间自己也有点懈怠,每天看书的时间也越来越少,很是迷茫。生于忧患,死于安乐,这句话说的还是没错的。
2016.11.17,这天还tm是我的阳历生日,果然是难忘的一天。唉,算了,不说了,又该刷简历了。
大话设计模式读书笔记
1.简单工厂模式
例子:封装计算器的加减乘除方法为类,并通过一个类去判断调用,不用实例化多个类

2.策略模式
简介:它定义了算法家族,分别封装起来,让他们直接可以互相替换,此模式让算法的变化,不会影响其他算法的客户。
例子:商场促销,策略与简单工厂的结合


3.单一职责原则
简介:就一个类而言,应该仅有一个引起它变化的原因。

4.开发-封闭原则
简介:是说软件实体(类、模块、函数等)应该可以扩展,但是不可以修改.


5.依赖倒转原则
简介:子类型必须能替够替换他们的父类型.

6.装饰模式
简介:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
例子:穿衣服类(人、服饰[T恤、皮鞋、短裤、西装])


7.代理模式
简介:为其他对象提供一种代理以控制对这个对象的访问。
例子:为别人做嫁衣


8.工厂方法模式
简介:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。


9.原型模式
简介:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。
例子:简历复印


10.模板方法模式
简介:定义一个操作类中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的特定步骤。

11.迪米特法则
简介:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另外一个类的某一个方法的话,可以用过第三者转发这个调用。


12.外观模式
简介:为子系统的一组接口提供一个一致的界面,此模式顶一个了一个高层接口,这个接口使得这一系统更加容易
例子:投资股市->投资基金


13.建造者模式
简介:将一个复杂对象的构建与它的表示层分离,使得同样的构建过程可以创建不同的表示。


14.观察者模式
简介:定义了一种多对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象再状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
例子:老板回来,我不知道,事件的委托


15.抽象工厂模式
简介:提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类。
例子:数据库的切换


16.状态模式
简介:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其他类
例子:加班何时休

17.适配器模式
简介:将一个类的接口转换成客户系统的另外一个接口。Adapter模式使得原本接口不兼容而不能一起工作的那些类可以一起工作
例子:在NBA我需要翻译

18.备忘录模式
简介:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
例子:保存游戏进度


19.组合模式
简介:将对象组合树形结构以表示'部分-整体'的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
例子:分公司。分部门

20.迭代器模式
简介:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部显示。

21.单例模式
简介:保证一个类仅有一个实例,并提供一个访问他的全局访问点。


22.桥接模式
简介:将抽象部分与它的实现部分分离,使它们都可以独立的变化。

23.命令模式
简介:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作.

24.职责链模式
简介:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象练成一个链,并沿着这条链传递该请求,知道有一个对象处理他为止。
例子:申请加薪

25.中介者模式
简介:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互.


26.享元模式
简介:运用共享技术有效的支持大量细粒度的对象.


27.解释器模式
简介:给定一个语言,定义他的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
例子:音乐解释器

28.访问者模式
简介:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.




创建型模式
抽象工厂、建造者、工厂方法、原型、单例、

结构性模式
适配器、桥接、组合、 装饰、外观、享元、代理

行为型模式
观察者、模板方法、命令、状态、职责链
解释器、中介者、访问者、策略、备忘录


设计是以使用工厂方法开始,当设计者发现需要更大的灵活性时,设计便会向其他创建型模式演化。
工厂方法的实现并不能减少工作量,但是他能够在必须处理新情况时,避免使已经很复杂的代码更加复杂。



svn增加可执行的文件权限
今天在mac环境下 用svn上传一个可执行脚本后,同步到测试服务器后,脚本没有可执行权限了,百度了下,终于找到了原因和解决办法
原来
本地文件在commit到仓库之前若没有chmod +x 权限的话,那在svn仓库里的文件将会保持当前无可执行属性状态。
即使在本地chmod +x filename 之后,再提交到仓库也是没有用的。check out到其他目录的时候,文件仍然没有可执行权限。

于是在linux下执行
svn propset svn:executable on filename
svn commit -m "增加脚本权限"

windows:
右键 - > propeties ->new  ->executable.
commit上去即可


去掉可执行权限的话
svn propdel svn:executable filename
svn commit -m '移除脚本可执行权限'

wiki和docs等开源网址

wiki 

https://www.dokuwiki.org

docs

http://www.wecenter.com/




2016.5.9晚

准备离职了,各种混乱,很烦,有点怀念之前在顺天通的日子了,那时候刚来北京,啥都不懂,也没那么大压力。很是感谢广狐的军哥当时给了我机会,让我在公司学到了很多东西。现在一步一步走来,工资虽然涨上来了,可是压力却也越来越大了。订婚,结婚,生娃,看起来人生已经完美了,可是现实让人不得不去思考未来。年龄也不小了,以后的路会在哪呢?


很是感谢曾经帮助过的人,顺天通的小伙伴和广狐的小伙伴以及现在的公司的小伙伴们,愿你们都有一个美好的未来。


感恩我最爱的人。


未标题-1.png


QQ截图20160509230044.png

git无法忽略某文件的问题
今天使用git的时候要忽略一个文件my.php,于是就
vim .gitignore 写入
/config/my.php
然后提交后依旧没有加入到忽略文件中,于是百度了下,终于找到了原因,原来由于我之前push 过my.php这个文件,所以现在必须要删除下缓存
git rm -r --cached /config/my.php

然后再提交就可以忽略文件了


优惠券
广告位-淘宝
最新微语