面试经历---YY欢聚时代

转载自  面试经历---YY欢聚时代(2015年11月21日上午初试、25日下午复试)

YY欢聚时代一年多前去面试过一次,当时鄙视了,在现在的公司呆了1年半了,感觉做得很不爽,而且薪资又不满意,所以想找个新工作,就想去YY面试。

下面将两次YY面试的经历写出来,包括一次初试和一次复试的面试题目。

一、2015年11月21日上午初试的面试题如下:

1.   做一下自我介绍

画出正在做的B2B平台的架构图,包括各子系统(ec,buyer,seller,message,order)、SOA(dubbo)、缓存redis、消息rabbitmq、单点登陆CAS、负载均衡nginx,mysql数据库读写分离,邮件服务器postfix

2.   单点登陆的原理

3.   如何防止cookie被盗用

4.   Cookie和Session的区别

5.   Session共享及其好处

6.   Mysql主从数据同步的方式

7.   Spring 控制器的加载过程

8.   Spring 实例是单例还是多例?会不会有线程问题

9.   如何进行跨机房数据同步?如何保证数据访问的一致性

10. 数据库索引有什么好处?

11. Mysql如何查看执行计划?

12. Mysql执行计划的的顺序

13. 如何查看Mysql中SQL执行的快慢?

14. SQL执行过程net和wait for table的区别?

15. IO与NIO的区别?NIO中select的原理?NIO缓冲区的默认大小?

16. 使用什么数据库连接池?连接池的工作 原理?常用连接池C3PO,proxool与JNDI的区别?

17. 缓存redis如何应对系统崩溃后的快照问题?

18. Redis的默认键大小是多少?

19. 线程中sleep与wait的区别?

20. Restful与dubbo的对比?

二、2015年11月25日下午复试的题目

1.IO和NIO的区别和原理?

(1)    IO是面向流的,NIO是面向缓冲区的

Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。 Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。

(2)    阻塞与非阻塞IO

Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。 Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。

(3)    使用单线程Selector来管理多个通道,减少系统开销

2. NIO中select的实现机制

(1)  创建Selector

(2)  向Selector注册通道

(3)  SelectionKey

(4)  通过Selector选择通道

(5)  wakeup

(6)  close()

3.多线程中syschronize、volitile、lock的区别和应用

1ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了锁投票,定时锁等候和中断锁等候
     
线程AB都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,
     
如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断
     
如果使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情
 
    ReentrantLock
获取锁定与三种方式:
    a)  lock(), 
如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁
    b) tryLock(), 
如果获取了锁立即返回true,如果别的线程正持有锁,立即返回false
    c)tryLock(long timeout,TimeUnit unit)
   如果获取了锁定立即返回true,如果别的线程正持有锁,会等待参数给定的时间,在等待的过程中,如果获取了锁定,就返回true,如果等待超时,返回false
    d) lockInterruptibly:
如果获取了锁定立即返回,如果没有获取锁定,当前线程处于休眠状态,直到或者锁定,或者当前线程被别的线程中断
 
2
synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不行,lock是通过代码实现的,要保证锁定一定会被释放,就必须将unLock()放到finally{}
 
3
、在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,但是ReetrantLock的性能能维持常态;

4.乐观锁和悲观锁的区别?

5.数据库中事务的级别

1.    读未提交

2.    读已提交

3.    可重复读

4.    读序列化

6. 数据库行级锁的应用,修改一条记录时是否会加上行级锁

行级锁的优点有:
 在很多线程请求不同记录时减少冲突锁。
 事务回滚时减少改变数据。
 使长时间对单独的一行记录加锁成为可能。

行级锁的缺点有:
 比页级锁和表级锁消耗更多的内存。
 锁是计算机协调多个进程或线程并发访问某一资源的机制,不同的数据库的锁机制大同小异。由于数据库资源是一种供许多用户共享的资源,所以如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。了解锁机制不仅可以使我们更有效的开发利用数据库资源,也使我们能够更好地维护数据库,从而提高数据库的性能。

上述三种锁的特性可大致归纳如下:
1) 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
2) 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
3) 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

     三种锁各有各的特点,若仅从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如WEB应用;行级锁更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统。

/* ==================== MySQL InnoDB 锁表与锁行 ======================== */

由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例) ,否则MySQL将会执行Table Lock (将整个资料表单给锁住)。

7.Spring事务的实现方式和实现原理

8.Spring AOP的实现

9.HTTP长连接和短连接的区别

TCP/IP

TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。

在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

在传输层中有TCP协议与UDP协议。

在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议

                 UDP包括DNS、TFTP等协议

短连接

连接->传输数据->关闭连接

HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

 

长连接

连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。

长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

 

http的长连接

HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。

 

什么时候用长连接,短连接?

 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

 

而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

 

总之,长连接和短连接的选择要视情况而定。

10.Spring事务的种类和各自的区别

11.Redis的集群方式,主点挂掉后如何将备点切换成主点

12.Mysql的集群方式,主备的数据同步方式,主库挂掉后如何切换从库为主库,有没做过两主两备的集群?

13.如何分析一条慢查询的SQL,MYSQL执行计划的类别(all Table,using index,using where)

14.线程挂掉后,如何在虚拟机上分析。

15.CAP一致性、可用性、分区容忍性,系统中是牺牲了哪一种。

16.Freemarker的缓存机制

17. Zookeeper的实现原理

 

三、HR面试

1.   个人的未来规划,偏技术还是偏管理?

2.   现在薪酬的组成,基本工资+补贴

3.   想离职的原因?

4.   期望的薪酬情况

个人问题

5.   社保和公积金的基数

基数按工资基数交,公积金的比率是公司交10%,个人交10%~12%

另外公司有四百多补贴

6.   入职后进入哪个团队?从事什么项目的开发?


四、个人面试总结

感觉很多技术问题答不上来,最终被鄙视了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

走进异步编程的世界 - 开始接触 async/await

序 这是学习异步编程的入门篇。 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $"" 来拼接字符串,相当于string.Format() 方法。 目录 Whats 异步?async/await 结构What’s 异步方法? 一、…

所有的软弱,都是昂贵的

作者:周冲 来源:周冲的影像声色(fuck_your_dick) 01 契诃夫有一个小说,名叫《柔弱的人》,讲一个主人,巧立名目,剥夺家庭教师的工资。 首先,他压缩掉她的周末&#xff0c…

python3中urlopen_解决python3 urllib中urlopen报错的问题

前言最近更新了Python版本,准备写个爬虫,意外的发现urllib库中属性不存在urlopen,于是各种google,然后总结一下给出解决方案问题的出现AttributeError: module object has no attribute urlopen问题的解决途径我们先来看下官方文档…

100+经典Java面试题及答案解析

转载自 100经典Java面试题及答案解析面向对象编程(OOP)Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改。代码复用。增强代码的可靠性和灵活性。增加代…

.NET HttpClient的缺陷和文档错误让开发人员倍感沮丧

设计错误、缺陷及文档错误等导致正确使用.NET HttpClient变得出奇地困难。所以,即使是生产环境中看似运行正常的应用程序,在负荷不满的情况下,也遭受着性能问题和运行时故障。 来自ASP.NET Monsters的Simon Timms就通过一篇题为“你正在错误地…

python监听剪贴板_Python监听剪切板实现方法代码实例

第一种import win32clipboardimport time#速度快 容易出错class niubi():def lihai(self):while True:#jianting().main()t jianting().main()print(t)class jianting():def clipboard_get(self):"""获取剪贴板数据"""win32clipboard.OpenClipb…

新闻发布项目——业务逻辑层(UserService)

package bdqn.newsManageServlet.Service;import bdqn.newsManageServlet.entity.User;/*** 用户信息* author Administrator**/ public interface UserService {public User getLoginUser(String uName,String pwd, String msg);}

二叉树总结挺好的很好记忆

https://blog.csdn.net/fightforyourdream/article/details/16843303 面试大总结之二:Java搞定面试中的二叉树题目 2013年11月20日 14:04:27 chiiis 阅读数:25438更多 个人分类: AlgorithmInterview 这是本系列的第二篇,与前一…

免费开源分布式系统日志收集框架 Exceptionless

前言 从去年就答应过Eric(Exceptionless的作者之一),在中国会帮助给 Exceptionless 做推广,但是由于各种原因一直没有做这件事情,在此对Eric表示歉意。:) Exceptionless 简介 Exceptionless 是一个开源的实时的日志收集…

如何安装mysql5.5.6_centos6安装mysql5.5.53

MysqL官网下载MysqL的red hat linux安装包下载地址为:http://dev.MysqL.com/downloads/MysqL/5.5.html#downloads下载后的文件为:MysqL-5.5.53-1.el7.x86_64.rpm-bundle.tar解压 tar 包 :tar -xvf MysqL-5.5.53-1.el7.x86_64.rpm-bundle.tar移…

java职业规划

百度搜索java职业规划好多啊啊啊

避免同步死锁

翻译自 避免同步死锁在我之前的文章“ Double-Checked Locking:Clever,but Broken ”(JavaWorld,2001年2月),我描述了几种常用的避免同步的技术实际上是不安全的,并建议了一个“如有疑问&#…

程序员小测试:保守派 vs 自由派

最近,我在阅读 Steve Yegg 的文集《程序员的呐喊》。 这是一本非常有趣的书,里面甚至包含了一个小测试(原文),区分一个程序员到底是保守派还是自由派。 下面一共有十个问题,每个问题都有 A 和 B 两个选项&a…

新闻发布项目——业务逻辑层(newsTbService)

package bdqn.newsManageServlet.Service;import java.util.List;import bdqn.newsManageServlet.entity.newsTb;/*** 新闻业务逻辑层的接口* author Administrator**/ public interface newsTbService {//分页查询public List<newsTb>getPagingNews(int pagesize,int pa…

django mysql 创建表_关于 django ORM 中,数据库建表方式的问题

本人以前是做客户端的&#xff0c;做后端没多久。一直有一个问题困扰我&#xff0c;正好现在手上有一个系统在做。系统逻辑是写一个爬虫在网上爬取一个网站的信息&#xff0c;经过加工处理后&#xff0c;使用 django 来展示和交互。表结构简化为三张表A:爬虫爬取得到的信息B:数…

遍历多叉树

https://www.jianshu.com/p/dee8284b2dc4 beg4 关注 2018.03.22 15:14* 字数 334 阅读 172评论 0喜欢 1 随便画一个树,写代码遍历它 OK,树的结构这么描述 public class TreeNode {private String name;private TreeNode parent;private List<TreeNode> children new …

tomcat与apache的面试题

转载自 tomcat与apache的面试题tomcat与apache有哪几种连接方式&#xff1f; Tomcat 与 Apache 有三种连接方式&#xff0c; 1、JK方式 这是最常见的方式。JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的&#xff0c;Tomcat 默认的 AJP Connector 的端口是 8009。JK 本身提供…

使用 Exceptionless 作为 Log Server 搭配 NLog 记录系统日志

昨天的文章<免费开源分布式系统日志收集框架 Exceptionless>反响很大,今天推的一篇是续集,文章来自于宝岛台湾的MVP, 让 Exceptionless 建置 Log Server,性能不用担心,用的是大名点点的ELK组合. 前言 痾...久违的新文章&#xff0c;让我的眼角流下了蛋蛋忧伤的泪珠.... 今…

elementui下拉框选择图片_element ui下拉框如何实现默认选择?

为什么我这样写没反应呢运营商级别 <el-optionv-for"item in options1":label"item.label":value"item.value"></el-option>export default{data(){return{selected:,options1:[{value: 选项1,label: 省级运营商}, {value: 选项2,la…

程序员成长之路 java面试指导(作者说的极好要看) 静下心看

https://blog.csdn.net/weixin_41780944/article/details/79429769 从面试官的角度分享一些后端校招经验&#xff08;作者说的极好要看&#xff09; https://blog.csdn.net/qq_34337272/article/details/80875016 除了手写代码和计算机基础&#xff0c;剩下的方面都是可选项…