面试总结

 

IBM

1.面向对象的基本特征,说下多态的内容

答:封装,继承,多态。多态(上转型)重要说下。

2.介绍一下排序算法,介绍一下堆排。

插入,冒泡,快排,希尔,堆排

3.一个人买东西,买200元就有一个100元的代金券,下次再买200可以使用,计算一下折扣率。

在买次数趋于无限大时,折扣是5折。

4.生产者,消费者问题。 wait notify synchronized  给List加锁。

 

其他总结

6.KMP算法:http://www.cnblogs.com/c-cloud/p/3224788.html

 7.vmstat 内存使用情况

8.逃逸分析:https://my.oschina.net/hosee/blog/638573

9.Java 中的native方法:http://blog.csdn.net/wike163/article/details/6635321

10.平衡三进制:

     我们用一个等臂天平来称物体的质量,如果我们要称的物体质量范围在1到40克(整数),请问我们最少需要几块砝码可以完成这项物体质量的称量?答:1111   1 3 9 27

11.垃圾回收

两个最基本的java回收算法:复制算法和标记清理算法

复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法

标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出
标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象
两个概念:新生代和年老代
新生代:初始对象,生命周期短的
永久代:长时间存在的对象
整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。
P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法
Parallel New(并行)收集器,新生代采用复制算法,老年代采用标记整理
Parallel Scavenge(并行)收集器,针对新生代,采用复制收集算法
Serial Old(串行)收集器,新生代采用复制,老年代采用标记整理
Parallel Old(并行)收集器,针对老年代,标记整理
CMS收集器,基于标记清理
G1收集器:整体上是基于标记 整理 ,局部采用复制
1.Serial New/Serial Old

    Serial/Serial Old收集器是最基本最古老的收集器,它是一个单线程收集器,并且在它进行垃圾收集时,必须暂停所有用户线程。Serial New收集器是针对新生代的收集器,采用的是Copying算法,Serial Old收集器是针对老年代的收集器,采用的是Mark-Compact算法。它的优点是实现简单高效,但是缺点是会给用户带来停顿。

2.Parallel New

    Parallel New收集器是Serial收集器的多线程版本(参照Serial New),使用多个线程进行垃圾收集。

3.Parallel Scavenge

    Parallel Scavenge收集器是一个新生代的多线程收集器(并行收集器),它在回收期间不需要暂停其他用户线程,其采用的是Copying算法,该收集器与前两个收集器有所不同,它主要是为了达到一个可控的吞吐量。

4.Parallel Old

    Parallel Old是Parallel Scavenge收集器的老年代版本(并行收集器),使用多线程和Mark-Compact算法。

5.CMS

    CMS(Current Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,它是一种并发收集器,采用的是Mark-Sweep算法。

6.G1

    G1收集器是当今收集器技术发展最前沿的成果,它是一款面向服务端应用的收集器,它能充分利用多CPU、多核环境。因此它是一款并行与并发收集器,并且它能建立可预测的停顿时间模型。

  

12.HTTP协议通常承载于TCP协议之上,有时也承载 于TLS( 安全传输层协议 或 SSL( 安全套接层协议Secure Sockets Layer 协议层之上,这个时候,就成了我们常说的HTTPS

 

13.BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理.AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

 

14.  就说最简单和普遍的HashMap,让你讲讲,你就可以先说说hashMap的设计原理,底层结构(链表+数组)扩容方式等,从这你就可以说说这种设计好在哪里(比如讲一讲put是如何做hash的),这时候你可以说这种hash可能会有冲突,https://my.oschina.net/yangkui/blog/372002  hashMap也是做了相应设计的。

然后面试官会问题你怎么解决冲突?你可以再给他讲讲解决hash冲突的三种通常方式,而hashMap用的是链式法,然后可以说到这样会有隐患就是hash链过长。

面试官再问,你会给他讲解决复杂度高的长链用了红黑树的结构,这里还可以延伸到红黑树的特点或者jdk7和jdk8的不同实现,这时候你可以说解决hash冲突,但hashMap还会有并发和同步的问题。

面试官会让你再讲讲,你可以说说hashtable是线程安全的,怎么实现的(sync函数),并不好,从而引出更好的juc包,说说concurrentHashMap,之后又可以说道锁分段原理,弱一致性迭代器,concurrentHashMap的锁粒度(java7和java8不同),同包的CopyOnWriteArray等等。

你还可以延伸说到锁(重量、轻量、悲观乐观各自实现、底层源码等等)、缓存(因为很多时候Map的结构可以作为缓存,从而可以说到缓存系统的设计,kv原理,分布式缓存redis、memcashed等等)

举这个例子就是想说,一个简单的基础问题可以一步一步有条理有层次的回答,每一层表达完抛个引子,让面试官可以继续问下去,从而让面试官真正了解你的掌握的深度。

 

 

美团面试题全网总结:

1.运行时异常及处理方法:

Java分为 Runtime异常和Checked异常,二者都可以用try...catch 进行捕获。

2.抽象类和接口:

相同点:都不能被实例化,用于被其他的类继承,实现。

    都可以包含抽象方法,实现接口或继承抽象类的子类必须实现全部抽象方法

不同点:接口体现的是一种规范,而抽象类体现的是一种模板式的设计

    接口里面只可以包含抽象方法,静态方法,默认方法,不能为普通方法提供方法的实现,只能定义静态常量。抽象类里面可以包含普通方法,静态常量,普通常量。

    接口里面不包含构造器。抽象类里面包含构造器,但是不是用来创建对象,而是用来完成初始化操作。

3.HashMap的put方法源码

在jdk1.7中 hashmap底层结构就是数组+链表的结构,如果发生冲突,即hashcode相同key也相同,但是value不同的话,那么就会放在底层数组的同一个下标处,官方话叫同一个桶内,以链表的形式保存

在jdk1.8中 数组+链表+红黑树的结构 :http://www.cnblogs.com/jzb-blog/p/6637823.html 

4.ArrayList,LinkedList的实现以及插入,查找,删除的过程

 

2017.7.31(最黑暗的7月末  美团跪  == 哇竟然没跪  还有第二次机会)

1.SpringMVC和Struts的区别,什么情况用SpringMVC什么情况用Struts。https://my.oschina.net/youjinli/blog/882484

2.JQuery对于JS的优点。

3.项目中多线程,java中解决多线程,lock同步代码块的区别

4.项目中文件夹的分类。

 

cvte笔试总结(一面挂)

1.完全二叉树有208个节点,叶子节点的个数

208个节点  那就是有 8层  除去最后一层的节点2^7-1= 127个非叶子节点  208-127=81个叶子节点

2.哲学家进餐问题:http://www.cnblogs.com/vettel/p/3438257.html

 

2017.8.12  cvte 一面

1.项目介绍

2.内连接 外链接: http://www.cnblogs.com/youzhangjin/archive/2009/05/22/1486982.html

3.List 排序  sort 方法 重写     http://www.cnblogs.com/supperwu/archive/2012/06/13/2548122.html

4.说一下自己擅长的部分

 

转载于:https://www.cnblogs.com/SitongLiu/p/7242335.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值