`
ymm8505
  • 浏览: 33414 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面试笔记

阅读更多
最近电商足足的火爆了一把、看样子还有一段日子要火爆、互联网金融也不甘落后……
复习了之前学习的Spring、Hibernate、SpringMVC、Mybatis等框架。
又对目前电商分布式架构略作研究、投出了几分简历,去面试了几把。
在这里总结总结查缺补漏分享给大家:


第一天是一个JD充值组的面试有两个小伙子看着就像是搞技术的。聊的还可以最后还没给消息
============================================================
集合:set\list  有啥区别 set允许有空值吗?为什么不允许?
      List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。
最大的不同就是List是可以重复的。而Set是不能重复的。
List适合经常追加数据,插入,删除数据。但随即取数效率比较低。
Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。

        hashMap的key可以是引用类型吗?
        可以是引用类型,但是有隐患,不建议使用引用类型。
--------------------------------------------------------------
事务的传播特性:
有7种,工作中经常用到的只有两种:require、supports
1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
7. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
---------------------------------------------------------------
线程的两种创建方式: extends Thread、implements Runnable
  Thread源码:public class Thread implements Runnable
所以说Thread本质还是implements Runnable来创建线程。不过Runnable是一个接口只有一个run方法。我们还不能直接去调用run方法。需要调用Start()方法来启动线程,等CPU用时间的时候安排时间来执行Run()方法。

-------------------------------------------------
线程池的创建方式:
我们的项目中用的是这种:
    Scheduled Thread Pool: 线程池可以对线程执行的时间和顺序做预先指定。比如说要某些线程在某个时候才启动或者每隔多长时间就启动一次。有点像我们的Timer Job。使用Executors.newScheduledThreadPool()创建。

另外几种:
    Single Thread Executor: 创建的线程只包含一个线程,所有提交到线程池的线程会按照提交的顺序一个接一个的执行。
通过Executors.newSingleThreadExecutor()方法创建。这种线程池适用于我们只希望每次使用一个线程的情况。
    Cached Thread Pool: 线程池里会创建尽可能多的必须线程来并行执行。一旦前面的线程执行结束后可以被重复使用。当然,使用这种线程池的时候我们必须要小心。我们使用多线程的目的是希望能够提高并行度和效率,但是并不是线程越多就越好。如果我们设定的线程数目过多的时候,使用Cached Thread Pool并不是一个很理想的选择。因为一方面它占用了大量的线程资源,同时线程之间互相切换很频繁的时候也会带来执行效率的下降。它主要适用于使用的线程数目不多,但是对线程有比较灵活动态的要求。一般通过Executors.newCachedThreadPool()来创建。
    Fix Thread Pool: 线程池里会创建固定数量的线程。在线程都被使用之后,后续申请使用的线程都会被阻塞在那里。使用Executors.newFixedThreadPool()创建。
我项目中用的就是这种固定大小的线程。

------------------------------------------------------------
保持线程同步的几种方法:
  synchronized、Volition
1.同步方法
    即有synchronized关键字修饰的方法。
    由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,
    内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。

2、同步代码块
3、使用特殊域变量(volatile)实现线程同步
    a.volatile关键字为域变量的访问提供了一种免锁机制,
    b.使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更新,
    c.因此每次使用该域就要重新计算,而不是使用寄存器中的值
    d.volatile不会提供任何原子操作,它也不能用来修饰final类型的变量
4、使用重入锁实现线程同步
    在JavaSE5.0中新增了一个java.util.concurrent包来支持同步。
    ReentrantLock类是可重入、互斥、实现了Lock接口的锁,
    它与使用synchronized方法和快具有相同的基本行为和语义,并且扩展了其能力
     ReenreantLock类的常用方法有:
        ReentrantLock() : 创建一个ReentrantLock实例
        lock() : 获得锁
        unlock() : 释放锁
5.使用局部变量实现线程同步
    如果使用ThreadLocal管理变量,则每一个使用该变量的线程都获得该变量的副本,
    副本之间相互独立,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响。
    ThreadLocal 类的常用方法
    ThreadLocal() : 创建一个线程本地变量
    get() : 返回此线程局部变量的当前线程副本中的值
    initialValue() : 返回此线程局部变量的当前线程的"初始值"
    set(T value) : 将此线程局部变量的当前线程副本中的值设置为value

-------------------------------------------------------------
如何创建一个带返回值的线程:

【转】、使用ExecutorService、Callable、Future实现有返回结果的多线程
ExecutorService、Callable、Future这个对象实际上都是属于Executor框架中的功能类。想要详细了解Executor框架的可以访问http://www.javaeye.com/topic/366591 ,这里面对该框架做了很详细的解释。返回结果的线程是在JDK1.5中引入的新特征,确实很实用,有了这种特征我就不需要再为了得到返回值而大费周折了,而且即便实现了也可能漏洞百出。
可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了,再结合线程池接口ExecutorService就可以实现传说中有返回结果的多线程了。下面提供了一个完整的有返回结果的多线程测试例子,在JDK1.5下验证过没问题可以直接使用。
-------------------------------------------------
垃圾收集器:有几种策略 你怎么知道这个对象要被收回。
1、引用计数算法   对象有一个引用就+1、不用了就-1 如果为0 就表示可以收回
2、根搜索算法  从GC Roots开始往下搜索、不可达到的对象就可以回收
     GC Roots可以是下面几种:
   1、虚拟机栈(栈帧中的本地变量表)中的引用的对象。
  2、方法区中的类静态属性引用的对象。
  3、方法区中的常量引用的对象。
  4、本地方法栈中JNI(即一般说的Native方法)的引用的对象

【转】http://www.cnblogs.com/gw811/archive/2012/10/19/2730258.html
------------------------------------------------------------------
动态代理、反射用在什么地方:
Spring AOP IOC
----------------------------------------------------------------------
Dubbo一次从注册中心取到地址之后。注册中心不能连接了.客户端还去注册中心取不取地址了。
    注册中心为N+1对等集群,一台挂掉后,会自动切换到另外一台注册中心
    注册中心全部挂掉后,消息消费者本地会缓存服务提供者列表,所以不影响当时的服务调用。
    服务提供者为集群,一台挂掉后,通过心跳过程,注册中心会立即刷到服务消费者告知;

----------------------------------------------------------------------
dubbo的选举机制、以及支持的协议。
Dubbo协议、Rmi协议、Hessian协议
API文档位置:
http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-dubbo%253A%252F%252F

--------------------------------------------------------------------
dubbo的 服务器集群节点如果有挂掉的是服务器端自己先发现的,还是等client连接请求过来以后发现的。
    注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
----------------------------------------------------------------------
jdom 和dom4j 解析XML 是否一次把xml文件全部加入到内存
dom是一次性把XML文件载入到内存。
----------------------------------------------------------------------
JVM的理解
http://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html
-------------------------------------------------------------------
自己实现一个注解
慕课网有一个视频自己去搜索一下
===============================================================
3
1
分享到:
评论
2 楼 ymm8505 2015-11-07  
what are you 弄啥哩?
1 楼 tianxiyue 2015-11-07  
    

相关推荐

    面试笔记-带答案.docx

    【标题】: "面试笔记-带答案.docx" 【描述】: "今年的面试题,从基础到深入系列,收集的其它同仁的,实用性强" 【标签】: "面试题" 【部分内容】: 本面试笔记涵盖了JAVA就业课程的常见问题,从面试流程到Java的...

    面试笔记.md

    面试笔记.md

    C\C++ 面试笔记 非常有用

    【C/C++ 面试笔记 非常有用】 在C/C++的面试中,掌握核心概念和技术是至关重要的。以下是一些关键知识点的详细解释: 1. **MMS与SMS的区别** - MMS(Multimedia Messaging Service)是多媒体消息服务,允许发送和...

    BAT完整面试笔记.docx

    ### BAT完整面试笔记知识点解析 #### 一、给定一个先序序列,重构完全二叉树,如果是一般二叉树能不能重构,为什么? **完全二叉树重构**: - **定义**:完全二叉树是指除最后一层外,每一层的节点数都达到最大值...

    美团和蚂蚁金服面试笔记.pdf

    Java面试笔记

    Java 面试笔记

    Java 面试笔记 这本书其实是我的一本笔记 (还在整理中). 我是也是刚找到工作. 这本笔记主要记录了我之前面试遇到的问题以及我在网上整理的一些资料 主要是面向 junior 级别的 就是我们这些小菜鸟啦 ~ --------------...

    面试笔记整理11111

    【标题】:“面试笔记整理11111” 在求职过程中,面试是至关重要的环节,它不仅是企业评估候选人技能和适应性的关键阶段,也是求职者展现自我、了解公司的机会。本“面试笔记整理11111”着重关注了面试准备、面试...

    Java面试笔记 225道Java面试题JAVA面试基础知识点总结Java数据结构题笔试WORD资料汇总(19个).zip

    Java面试笔记 225道Java面试题JAVA面试基础知识点总结Java数据结构题 JAVA笔试面试WORD资料汇总(19个): 2014年最新Java笔试题及答案.docx 225道Java面试题 学会了Java面试随你问.docx Ant和Maven的作用是什么?两者...

    python面试笔记项目

    【Python面试笔记项目】是为求职者准备的一份详尽的资源,涵盖了多个与Python相关的面试主题,旨在帮助应聘者全面准备技术面试。这份笔记包含了MySQL数据库管理、Django Web框架、Python语言基础、RESTful API设计...

    java面试笔记最新java面试笔记

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和...对于"面试笔记"这个文件,它很可能包含了以上所有领域的详细解答和实例,是准备Java面试的宝贵资料。通过深入学习和实践,可以显著提高面试成功率。

    java面试题,java面试笔记

    java面试题,java面试笔记整理,题不少,还算全,面试专用

    深圳文思创新面试同洲电子面试笔记

    【标题】:“深圳文思创新面试同洲电子面试笔记”主要涵盖了两个公司的面试经验分享,即在深圳的文思创新和同洲电子的求职过程。在IT行业,面试是获取职位的关键环节,它不仅考验候选人的专业技能,还考察其沟通、...

    黑马面试笔记

    "黑马面试笔记" 本资源主要讲述了面试准备和 JAVA 基础知识点,包括面试技巧、个人介绍、面试官互动、JAVA 基础语法、面向对象基础、三大特性(封装、继承、多态)等知识点。 一、面试技巧 面试前需要注意个人...

    java学习和面试笔记

    这份"java学习和面试笔记"涵盖了Java的基础到进阶知识,包括Java Standard Edition(Java SE)、原生的JSP(JavaServer Pages)和Servlet、以及SSH(Spring、Struts、Hibernate)和SSM(Spring、SpringMVC、MyBatis...

    JavaWeb面试笔记·.pdf

    2.JavaScript相关技术路线(黑线) ...2.1.列举 BOM中常用的几个全局变量和全局方法? 全局对象: window 全局变量: document location history navigator screen 全局方法:alert() confirm() prompt() open() close()

    面试笔记整理.pdf

    根据给定的文件信息,以下为整理的Java面试知识点: 1. Java集合框架基础: - List集合:有序且可以包含重复元素的集合,特点包括容量动态扩展,默认扩容增量为当前容量的1.5倍。ArrayList和LinkedList是List接口...

    HCIE-面试笔记 抓住面试的尾巴

    这份HCIE面试笔记主要涉及网络协议和设备配置等多个方面的内容,特别是包括了VLAN、STP、RSTP、MSTP、RIP、ISIS协议的细节和配置,以及端口类型和报文格式等知识点。 VLAN(Virtual Local Area Network)是虚拟...

    操作系统面试笔记.pdf

    不过,既然题目要求基于标题“操作系统面试笔记.pdf”以及描述“操作系统面试笔记.pdf”来生成相关知识点,我们可以围绕操作系统这一主题进行展开。 ### 操作系统面试知识点 #### 一、操作系统的概念与功能 - **...

    Java面试笔记.pdf

    在Java面试中,面试官通常会考察候选人的基础知识、面向对象编程理解、JVM工作原理、集合框架、多线程、异常处理、设计模式以及企业级应用开发的相关技术,如J2EE和Spring框架。 1. **Java高效的原因**:Java的高效...

    阿秀的面试笔记 ,计算机专业, C++

    为了应对日益激烈的就业竞争,阿秀,一个计算机专业的毕业生,通过自己的努力,在秋季招聘季(秋招)中积累了一系列面试经验和知识点,整理成了一份详尽的面试笔记。这份笔记不仅包含C++编程语言的学习,还包括了...

Global site tag (gtag.js) - Google Analytics