A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

公司名称:西安古阳信息科技有限公司
公司地址:西安市雁塔区橙仕空间
公司规模:100-150
面试整体事项
.基础知识:
1)集合类:ListSet比较,各自的子类比较(ArrayListVectorLinkedListHashSetTreeSet);
2HashMap的底层实现,之后会问ConcurrentHashMap的底层实现;
3)如何实现HashMap顺序存储:可以参考LinkedHashMap的底层实现;
4HashTableConcurrentHashMap的区别;
相同点: Hashtable ConcurrentHashMap都是线程安全的,可以在多线程环境中运行; keyvalue都不能是null
区别: 两者主要是性能上的差异,Hashtable的所有操作都会锁住整个对象,虽然能够保证线程安全,但是性能较差; ConcurrentHashMap内部使用Segment数组,每个Segment类似于Hashtable,在“写”线程或者部分特殊的“读”线程中锁住的是某个Segment对象,其它的线程能够并发执行其它的Segment对象。

5String,StringBufferStringBuilder的区别;
1、在执行速度上:Stringbuilder->Stringbuffer->String
2String是字符串常量
      Stringbuffer是字符串变量线程安全
      Stringbuilder是字符串变量线程不安全
6Object的方法有哪些:比如有wait方法,为什么会有;
简单说:因为synchronized中的这把锁可以是任意对象,所以任意对象都可以调用wait()notify();所以waitnotify属于Object
专业说:因为这些方法在操作同步线程时,都必须要标识它们操作线程的锁,只有同一个锁上的被等待线程,可以被同一个锁上的notify唤醒,不可以对不同锁中的线程进行唤醒。
7waitsleep的区别,必须理解;
sleep()方法导致了程序暂停执行指定的时间,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而且sleep()只能自己到点了醒来,不能被唤醒。
wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池,准备获取对象锁进入运行状态。
8JVM的内存结构,JVM的算法;
JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配;
方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆);栈又分为java虚拟机栈和本地方法栈主要用于方法的执行。

9)强引用,软引用和弱引用的区别;
10)数组在内存中如何分配;
Java中的数组是用来存储同一种数据类型的数据结构,一旦初始化完成,即所占的空间就已固定下来,初始化的过程就是分配对应内存空间的过程。即使某个元素被清空,但其所在空间仍然保留,因此数组长度将不能被改变。
11)用过哪些设计模式,手写一个(除单例);

12springmvc的核心是什么,请求的流程是怎么处理的,控制反转怎么实现的;
1 首先用户发送请求到前端控制器DispatcherServlet,也是springmvc的核心控制器,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
     2 DispatcherServlet调用HandlerMappingHandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象,也就是Controller层,多个 HandlerInterceptor拦截器)返回给DispatcherServlet
     3 DispatcherServlet根据得到的Handler,调用合适的HandlerAdapterHandlerAdapter将会把处理器       Handler 包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处        理器。
     4 HandlerAdapter会根据适配的结果调用真正的处理器(Handler)完成请求处理,并向DispatcherServlet返回一个           ModelAndView对象。
     5 根据返回的ModelAndView选择一个适合的ViewResolver(视图解析器)返回给DispatcherServlet
     6 ViewResolver根据view model 渲染视图
     7 将渲染结果返回给客户端。

IOC控制反转的实现是基于springbean工厂,当你需要引用一个对象时,将本来应该由你控制的实例化对象的操作
交给配置好的xml来进行,然后再给你注入进去,从而降低代码间的耦合度


13spring里面的aop的原理是什么;
AOP的主要原理:动态代理
1.静态代理:
l 针对每个具体类分别编写代理类;
l 针对一个接口编写一个代理类;
2.动态代理:
针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类

14mybatis如何处理结果集:反射,建议看看源码;
到此,Mybatis是怎么利用ResultSet生成对象的过程已经分析完毕。分为简单映射和复杂映射。
简单映射就是不包含内映射的resultMap
复杂映射就是包含内映射的resultMap
复杂映射的过程比较复杂,源代码也没有一行注释,本人是写了个实例,再通过eclipse中的debuger一步步来分析的。

15java的多态表现在哪里;
父类引用指向子类对象
16)接口有什么用;
一是实现多重继承,因为java是单根语言。
二是便于实现各种框架,java 的各种框架中,都是拿接口调来调去。一旦你实现了这个接口,你的代码就嵌入了框架。
三是为了实现前面各位说的规范。

17)说说http,https协议;
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
httphttps使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443
http的连接很简单,是无状态的。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。
18tcp/ip协议簇;
TCP/IP由四个层次组成:1、网络接口层:这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 2、网间网层:负责相邻计算机之间的通信。其功能包括三方面。1是处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。2是处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。3是处理路径、流控、拥塞等问题。 3、传输层:提供应用程序间的通信。其功能包括:格式化信息流;提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。 4、应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。
19osi五层网络协议;
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTPHTTPSNMPFTPSMTPDNSTelnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCPUDP
网络层 为数据包选择路由 IPICMPRIPOSPFBGPIGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIPCSLIPPPPARPRARPMTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110IEEE802IEEE802.2
20tcpudp区别;
1、基于连接与无连接。
2TCP要求系统资源较多,UDP较少。
3UDP程序结构较简单。
4、流模式(TCP)与数据报模式(UDP)
5TCP保证数据正确性,UDP可能丢包。
6TCP保证数据顺序,UDP不保证。
7TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
8TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。

21)用过哪些加密算法:对称加密,非对称加密算法;


22)说说tcp三次握手,四次挥手;
23cookiesession的区别,分布式环境怎么保存用户状态;
1session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。   

  2session中保存的是对象,cookie中保存的是字符串。   

  3session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

24gitsvn区别;
1. Git是分布式的,SVN是集中式的,好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交;

25)请写一段栈溢出、堆溢出的代码;
public class Test {  

    public void testHeap(){  
        for(;;){  
              ArrayList list = new ArrayList (2000);  
          }  
    }  
    int num=1;  
    public void testStack(){  
        num++;  
        this.testStack();  
     }  

    public static void main(String[] args){  
        Test  t  = new Test ();  
        t.testHeap();  
        t.testStack();     
    }  
}  

26ThreadLocal可以用来共享数据吗;

.IO:
1bionioaio的区别;
2nio框架:dubbo的实现原理;
3)京东内部的jsf是使用的什么协议通讯:可参见dubbo的协议;


.算法:
1java中常说的堆和栈,分别是什么数据结构;另外,为什么要分为堆和栈来存储数据。
2TreeMap如何插入数据:二叉树的左旋,右旋,双旋;

3)一个排序之后的数组,插入数据,可以使用什么方法?答:二分法;问:时间复杂度是多少?
4)平衡二叉树的时间复杂度;
5Hash算法和二叉树算法分别什么时候用;
6)图的广度优先算法和深度优先算法:详见jvm中垃圾回收实现;


.多线程相关:
1)说说阻塞队列的实现:可以参考ArrayBlockingQueue的底层实现(锁和同步都行);
2)进程通讯的方式:消息队列,共享内存,信号量,socket通讯等;
3)用过并发包的哪些类;
4)什么地方用了多线程;
5Excutors可以产生哪些线程池;
6)为什么要用线程池;
7volatile关键字的用法:使多线程中的变量可见;

.数据库相关(mysql):
1msyql优化经验:
2mysql的语句优化,使用什么工具;
3mysql的索引分类:B+hash;什么情况用什么索引;
4mysql的存储引擎有哪些,区别是什么;
5)说说事务的特性和隔离级别;
6)悲观锁和乐观锁的区别,怎么实现;
.mq
1mq的原理是什么:有点大。。都可以说;
2mq如何保证实时性;
3mq的持久化是怎么做的;

.nosql相关(主要是redis:
1redismemcache的区别;
2)用redis做过什么;
3redis是如何持久化的:rdbaof
4redis集群如何同步;
5redis的数据添加过程是怎样的:哈希槽;
6redis的淘汰策略有哪些;
7redis有哪些数据结构;

.zookeeper:
1zookeeper是什么;
2zookeeper哪里用到;
3zookeeper的选主过程;
4zookeeper集群之间如何通讯;
5)你们的zookeeper的节点加密是用的什么方式;
6)分布式锁的实现过程;


.linux相关:
1linux常用的命令有哪些;
2)如何获取java进程的pid
3)如何获取某个进程的网络端口号;
4)如何实时打印日志;
5)如何统计某个字符串行数;


.设计与思想:
1)重构过代码没有?说说经验;
2)一千万的用户实时排名如何实现;
3)五万人并发抢票怎么实现;

139 个回复

倒序浏览
谢谢楼主,辛苦了...........
回复 使用道具 举报
6666666666666666
回复 使用道具 举报
赞赞赞赞赞666666666
回复 使用道具 举报
加油,努力,向上...........
回复 使用道具 举报
6666666666666666
回复 使用道具 举报
谢谢楼主,辛苦了...........
回复 使用道具 举报
yujq 中级黑马 2019-6-10 22:53:12
8#
感谢分享
回复 使用道具 举报
回复 使用道具 举报
赞赞赞!!!
回复 使用道具 举报

赞赞赞!!!
回复 使用道具 举报

赞赞赞!!!
回复 使用道具 举报
duanshaobo 来自手机 中级黑马 2019-6-11 11:37:47
13#
)五万人并发抢票怎么实现
回复 使用道具 举报
jsnoob 来自手机 中级黑马 2019-6-11 13:28:08
14#
加油  加油  加油  加油~
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
文章文采斐然,辞藻华美,语言朴实,文笔清新,情感丰富,人物形象饱满,条理清晰,结构层次分明,情节合理,跌宕起伏,描写生动,引人入胜,艺术感染力强,结尾画龙点睛,寓意深刻,发人深思,意味悠长。
回复 使用道具 举报
66666666666666666666666666
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马