java面试问题参考_第1页
java面试问题参考_第2页
java面试问题参考_第3页
java面试问题参考_第4页
java面试问题参考_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电话面试主要考察3块内容:1、Java的相关基础知识,开源框架的原理,JVM,多线程,高并发,中间件等;2、之前项目经历,运用的技术,遇到的问题,如何解决,个人有什么收获和成长;3、对于技术的热情(平时是否看些技术书籍,逛论坛,写博客,写源代码或程序等);他们电面不通过我这边约时间,你如果接到电话不方便,可以跟面试官改约,如果漏接电话,可以找我,我去协调,一般面试官会在联系的。CoreJava:(P6级必问其中3题以上)1)整数数组按绝对值排序2)ConcurrentHashMap的数据结构3)非阻塞IO和异步IO的区别4)内存管理机制,如何回收过期对象,判断依据,内存溢出场景,如何排查等(P7需要很清楚的知道jvm的内存结构,回收过程,及虚拟机相关的回收算法及设计初衷)5)equals和==的区别6)final和finally7)常用的集合类有哪些?区别是什么?hashmap和hashtable的区别。哪些是线程安全的哪些不是?8)Object中的常见的方法。9)java中的异常体系,异常出现的情况如:ClassNotFound、空指针等10)JVM的内存模型是怎么样的?应用突然变得很慢,如何定位?11)Java的异常类层次结构12)对JDK8的新特性有什么了解13)Java的类加载器的机制((P7除了知道机制外,需要能够说明,利用classloader特性的一些场景应用)14)原子类的实现;15)Error、Exception和RuntimeException的区别,作用又是什么16)IO和NIO本质不同在实际项目使用场景及如何使用;17)sleep()和wait()有什么区别;数据库&事物:(P6级必问)什么样的场景会产生数据库死锁,如何解决SQL如何优化oracle或者mysql分页的实现思路SQL怎么判断字段是否为空唯一索引能否插入空数据库索引的算法原理;乐观锁,悲观锁;WEB(P6级必问)post/get的区别是什么cookie/session有什么区别web集群中登录态如何共享xss、csrf等如何防范?sql注入如何防范?浏览器缓存策略;Ajax如何解决跨域问题;常用框架(P6级必问)springAOP/IOC的理解,大致原理,类内部调用是否会触发aop的逻辑?为什么?Spring的事物传播属性或数据库的事物隔离级别,实现原理velocity如何避免引用空属性的报错?spring的单例或者原型如何配置?还用过其他什么scope?log4j或者logback的日志记录文件在哪里?(开放式问题,怎么确定日志打到哪里了)工具:maven中如何排除包冲突svn合并代码怎么做分布式:如何实现分布式锁分布式Session如何实现如何消除分布式事物MetaQ,Zookeeper的原理和适用场景,(P7需要对业界的同类产品有一定的了解,知道各自的优缺点)Redis3.0的分布式集群架构,(P7需要对业界的同类产品有一定的了解,知道各自的优缺点)高并发:原子计数器AtomicInteger的技术实现volatile的内存模型接口服务如何防止重复调用?自己使用过多线程的场景是什么?线程安全如何保证?java的并发框架是否用过,线程池是否用过,RejectedExecutionHandler是否知道?设计:对常用设计模式的了解,在项目中的实际应用。排序算法描述;在项目中是否采用分层的结构,是怎样划分的,各层之间采用了哪些相关技术;场景问题:对所做的系统的业务描述。能够描述清楚业务的核心逻辑和模型抽象,技术问题解决有正确思路(P6要求)。对其中的技术选型,技术方案有周全考虑,并且独立完成一个较复杂系统的设计和实现。(p7要求)自己平时会学习些什么技术,学习程度如何?做项目过程中遇到什么技术难点;(p6和P7通过问题的技术难度、技术范围来区分);怎么看待加班;线上问题分析处理是否有经验如何解决的;P7除了要抽查上面的技术问题外,建议选择询问以下问题:描述一个独立设计的较复杂系统的设计思路和实现,能够清晰表达系统中的关键概念模型,行业内的对标产品及相关技术的熟悉程度;对其中的技术方案有周全考虑,技术方案完整无明显漏洞;实际项目设计中的延展性,对业务未来发展有一定考虑;实际项目设计中如何保持优雅,方便运维和发展;独立设计系统中的技术选型的比较,熟悉的技术领域最佳实践;开发设计中,采取了什么样的技术手段,提高开发的效率;如果要设计一个搜索引擎,像google那样只有两个页面,要求性能最大化,web方面应该如何设计?(不需要考虑搜索的逻辑)项目中用到点的技术细节挖掘;主要考察他对技术细节深度理解。如对MetaQ原理的理解,同类产品的比较。算法和数据结构的描述;展示他对各数据结构的理解,不同场景下如何设计合理的数据结构和算法,如何权衡时间与空间的取舍;troubleshooting的最佳实践。这里根据不同的trouble情况会涉及到jvm内存,数据库,操作系统等相关的知识点。目前团队的瓶颈和困难分析。碰到过的最棘手技术问题或最复杂的业务场景的设计。技术一面和二面的侧重点:一面重点(从前到后):技术能力,实际动手能力;技术思路;沟通表达能力;学习能力;Goku1.MyBastis如何映射,MyBatis原理。2.如何实现高可用的,你的系统怎么达到高可用的?3.redis底层实现,redis是如何更新缓存的?4.集合框架有哪些是线程安全的?哪些是非安全的?5.开发中你们如何进行单元测试?覆盖率如何?自动化测试怎么达到?6.SpringMvc执行流程,java常用设计模式。7.eureka怎么保证可用性,及底其层实现,与zookeeper有什么区别?8.高并发相关的问题,concurrent相关包。9.为什么使用redis做缓存而不是其他的消息队列入kafka,以及项目的稳定性。10.事务一定会锁表吗?11.java并发和线程同步,同步机制,锁具体解释一下。12.redis集群搭建,分词算法、redis主从同步机制。13.常用的线程池,threadlocal有什么用,多线程并发解决办法。1、分布式事务2、服务降级熔断和降级Hystrix3、ServiceMesh4、分布式请求跟踪系统5、NewSql6、分布式锁Etcd7、服务熔断Hystrix8、安全方面的架构9、服务注册治理10、高并发手段11、负载均衡12、幂等设计13、服务限流14、配置中心15、消息队列16、服务管理17、服务调度18、分库分表19、sql优化20、数据一致性21、服务监控开源监控框架22、RPC网关:统一认证api鉴权api限流http://www.ciliba.fun/detail/43675741.htmlhttp://www.ciliba.fun/s/偷拍.html/q/偷拍.html/q/偷拍.htmlhttp://www.btdad.sitehttps://bt.suobt001.xyz/search/偷拍/基础篇基本功面向对象的特征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聚集索引与非聚集索引的区别limit20000加载很慢怎么解决选择合适的分布式主键方案选择合适的数据存储方案ObjectId规则聊聊MongoDB使用场景倒排索引聊聊ElasticSearch使用场景缓存使用Redis有哪些类型Redis内部结构聊聊Redis使用场景Redis持久化机制Redis如何实现持久化Redis集群方案与实现Redis为什么是单线程的缓存奔溃缓存降级使用缓存的合理性问题消息队列消息队列的使用场景消息的重发补偿解决思路消息的幂等性解决思路消息的堆积解决思路自己如何实现消息队列如何保证消息的有序性框架篇SpringBeanFactory和ApplicationContext有什么区别SpringBean的生命周期SpringIOC如何实现说说SpringAOPSpringAOP实现原理动态代理(cglib与JDK)Spring事务实现方式Spring事务底层原理如何自定义注解实现功能SpringMVC运行流程SpringMVC启动流程Spring的单例实现原理Spring框架中用到了哪些设计模式Spring其他产品(SrpingBoot、SpringCloud、SpringSecuirity、SpringData、SpringAMQP等)Netty为什么选择Netty说说业务中,Netty的使用场景原生的NIO在JDK1.7版本存在epollbug什么是TCP粘包/拆包TCP粘包/拆包的解决办法Netty线程模型说说Netty的零拷贝Netty内部执行流程Netty重连实现微服务篇微服务前后端分离是如何做的微服务哪些框架你怎么理解RPC框架说说RPC的实现原理说说Dubbo的实现原理你怎么理解RESTful说说如何设计一个良好的API如何理解RESTfulAPI的幂等性如何保证接口的幂等性说说CAP定理、BASE理论怎么考虑数据一致性问题说说最终一致性的实现方案你怎么看待微服务微服务与SOA的区别如何拆分服务微服务如何进行数据库管理如何应对微服务的链式调用异常对于快速追踪与定位问题微服务的安全分布式谈谈业务中使用分布式的场景Session分布式方案分布式锁的场景分布是锁的实现方案分布式事务集群与负载均衡的算法与实现说说分库与分表设计分库与分表带来的分布式困境与应对之策安全问题安全要素与STRIDE威胁防范常见的Web攻击服务端通信安全攻防HTTPS原理剖析HTTPS降级攻击授权与认证基于角色的访问控制基于数据的访问控制性能优化性能指标有哪些如何发现性能瓶颈性能调优的常见手段说说你在项目中如何进行性能调优工程篇需求分析你如何对需求原型进行理解和拆分说说你对功能性需求的理解说说你对非功能性需求的理解你针对产品提出哪些交互和改进意见你如何理解用户痛点设计能力说说你在项目中使用过的UML图你如何考虑组件化你如何考虑服务化你如何进行领域建模你如何划分领域边界说说你项目中的领域建模说说概要设计设计模式你项目中有使用哪些设计模式说说常用开源框架中设计模式使用分析说说你对设计原则的理解23种设计模式的设计理念设计模式之间的异同,例如策略模式与状态模式的区别设计模式之间的结合,例如策略模式+简单工厂模式的实践设计模式的性能,例如单例模式哪种性能更好。业务工程你系统中的前后端分离是如何做的说说你的开发流程你和团队是如何沟通的你如何进行代码评审说说你对技术与业务的理解说说你在项目中经常遇到的Exception说说你在项目中遇到感觉最难Bug,怎么解决的说说你在项目中遇到印象最深困难,怎么解决的你觉得你们项目还有哪些不足的地方你是否遇到过CPU100%,如何排查与解决你是否遇到过内存OOM,如何排查与解决说说你对敏捷开发的实践说说你对开发运维的实践介绍下工作中的一个对自己最有价值的项目,以及在这个过程中的角色(1)多个线程顺序执行,如果有一个线程运行超时了,那么如何保证超时线程不影响其他线程执行?答:使用Thread.join(超时时长)(3)并发集合有哪些?非阻塞式列表对应的实现类:ConcurrentLinkedDeque(4)mysql什么情况下会死锁?(5)transition关键字是什么,ArrayList如何序列化的?(6)java提供了哪些线程池,ExecutorService的几个参数是什么意思?第二个参数和第三个参数有什么关系?(7)平时会用到哪些事务隔离级别?(8)HashMap数据结构是如何的,equal和hash是什么作用?hash相同,那么equal是否相同?equal相同,那么hash是否相同?(9)JVM默认gc是哪个?

CMS怎么工作的?为什么会出现STW(STOPTHEWORLD)?什么时候会触发CMS?什么情况下会触发fullGC?如果1G内存,那是否可以使用CMS?(10)Java8的HashMap为什么要用红黑树?红黑树的时间复杂度是多少?(11)Java7的ConcurrentHashMap的数据结构是怎么样的?Java8的ConcurrentHashMap的数据结构又是怎么样的,为什么要用重量锁synchronized,而不用并发锁?(11)分表分库上进行分页查询,SQL如何更优化?(12)linux下,如何定位java的cpu占用率高的代码?(13)熟悉哪些linux的命令,如何查找出java的内存占用率高的代码?(14)如果java有一个方法效率很慢,请问如何排查?请说出来平时工作上遇到哪些类似情况,如何解决的?(15)jvm有哪些常用命令?各有什么作用?(16)描述下Dubbo的工作原理?如果Dubbo提供者、消费者配置都正常无误,但是会出现Dubbo消费者启动时会无法订阅到服务,请问什么情况下出现?(17)SpringMVC的核心类有哪些?一个请求参数如何传递到方法中的参数中?如果请求参数a,那么对应方法中的参数有两个,一个是对象(对象有a属性),另一个是字符串a,请问这参数a如何传递的?(18)代理模式和包装模式有什么区别?静态代理和包装模式从代码上是否很相似,那么什么会要区分这2个模式?(19)为什么要用负载均衡,负载均衡有哪些?(20)HashMap是否线程安全,为什么?(21)Spring的Bean是否单例?那么如何保证多线程安全?(22)mybatis的${}和#{}有什么区别?1、jvm虚拟机:2、mysql事务3、复杂sql4、数据量5、kafka6、集合源码map7、有序map8、锁9、项目描述10、java8新特性11、线程池12、有序mapLinkedHashMap13、动态代理14、对象类型的判断?A:instanceof15、Q:自定义注解详见:/dalaoyang/p/8657030.htmlA:创建自定义注解与编写接口很相似,除了它的接口关键字前有个@符号。@Target是java的元注解(即修饰注解的注解),这里的@Target({METHOD,TYPE})指可以修饰方法、描述类、接口(包括注解类型)或enum声明。@Retention是java中的运行时注解,可以划分为三类1.RetentionPolicy.RUNTIME:注解不仅会被保存到class文件里,在jvm加载class文件之后仍然不会消失。2.RetentionPolicy.CLASS:注解会被保留到class文件里,但jvm加载class文件时被遗弃,默认的生命周期如此。3.RetentionPolicy.SOURCE:注解只会保留在源文件中,当java文件变异成class文件shi@Inherited:允许子类继承父类的注解@Documented:注解表明制作javadoc时,是否将注解信息加入文档。(添加时表示制作javadoc时将注解会加入其中)自定义注解@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public@interfaceAnnotations{longtime()default-1;}16、Q:线程池核心最大线程数达到核心之后如何创建队列A:/waytobestcoder/p/5323130.html17、Q:mysql数据库隔离级别是多少A:mysql数据库的四种隔离级别/aiseek/p/8175849.html1.READUNCIMMITTED(未提交读)总结:这就是事务还没提交,而别的事务可以看到他其中修改的数据的后果,也就是脏读。2.READCOMMITTED(提交读)总结:这就是小华的事务执行到一半,而小明看不到他执行的操作,所以看到的是旧数据,也就是无效的数据3.REPEATABLEREAD(可重复读)总结:虽然读取同一条数据可以保证一致性,但是却不能保证没有插入新的数据4.SERIALIZABLE(可串行化)18、合理创建索引索引类型Mysql目前主要有以下几种索引类型:普通索引、唯一索引、全文索引(FULLTEXT)、单列索引、多列索引、组合索引19、Q:查看sql有没有执行索引A:possible_keysA在select窗口中,执行以下语句:setprofiling=1;--打开profile分析工具showvariableslike'%profil%';--查看是否生效showprocesslist;--查看进程usecmc;--选择数据库showPROFILEall;--全部分析的类型showindexfromt_log_account;##查看某个表的索引showindexfromt_car_copy;##查看某个表的索引--使用explain命令查看query语句的性能:EXPLAINselect*fromt_car_copy;##查看执行计划中的sql性能EXPLAINselect*fromt_car_copywhereorg_id='3';EXPLAINselect*fromt_car_copywhere1=1andorg_id='3';20、Q:redis默认端口号A:637921、redis过期策略、过期数据(底层)详见:/weixin_34292959/article/details/86364108Redis三种Key过期策略被动(惰性)删除、主动删除、maxmemory22、Q:mybaties一级二级缓存区别A:一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同一个sqlSession中,不同的sqlSession中的缓存是互相不能读取的。A:二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。23、开发mybaties插件技术24、springboot启动流程25、Q:分布式锁实现方式A:基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁;26、接口,抽象类27、多态28、arrayList底层AX_ARRAY_SIZE强转29、arrayList和hasmap默认大小30、SimDateFormat线程安全吗31、springaop原理32、spring事务几种533、springioc以及实现方式34、mysql统计空列count1*吗单引号:在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。35、左连接会走索引吗36、Java8垃圾回收机制37、描述秒杀系统设计,不用redis,高并发怎么处理38、mysql行锁39、单点登录设计40、权限设计41、离职原因42、jvm内存模型、堆栈43、集合、hasmap44、线程池,参数45、springmvc注解46、服务之间如何调用47、es48、redis49、kafka多发、漏发50、商品秒杀51、springcloud组件52、支付53、git命令54、分布式事务秒杀锁住库存redis基本数据类型springboot启动类注解mybaties#$区别mybatis动态orderby使用$线程什么周期新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态hasmaplienkhasmap安全map运行时和非运行时异常百度移动游戏1.ArrayList和LinkedList区别2.HashMap实现原理,内部构造,JDK1.8的实现3.如何设计数据库4.JVM堆为什么分成年轻代和老年代5.ConcurrentHashMap原理6.一个方法中定义一个int型变量和一个Integer变量,这两个变量什么时候会被回收阿里高德1.LinkedList是单向链表还是双向链表2.JVM内存模型3.GC算法以及回收器(CMS)4.TCP、UDP、IP、HTTP分别处于哪层阿里1.JVM内存模型2.ZooKeeper选举爱奇艺1.CPU100%如何找问题2.MySQL两种存储引擎(Innodb和MyISAM)的区别3.Redis和Memecache区别微博1.Redis存储一个k-v占多少内存2.MySQL索引问题,聚簇索引(a,b,c),查询时使用条件b和c是否走索引3.如何高效的将字符串IP翻译成整数360面试1.如何实现一个list,set2,list如何去重3.如何实现线程在同一时刻执行4.线程的实现方式5.项目的演示6.hashmap,hashtable的区别蓝汛1.redis2.netty3.题目讲解1.Java类加载器机制类加载器结构:引导类加载器(BootstrapClassLoader,原生代码写的,不继承自ClassLoader):加载Java核心库|/扩展类加载器(ExtClassLoader,继承自ClassLoader,parent==null):加载Java的扩展库|/系统类加载器(SystemClassLoader,继承自ClassLoader,parent==ExtClassLoader):根据Java应用的类路径(CLASSPATH)来加载Java类,可以通过ClassLoader.getSystemClassLoader()来获取它。类加载过程:加载类时采用代理机制,当前类加载器首先会让父类加载器进行加载,如果加载不到,在自己加载。web类加载器机制不同,优先自己加载(除Java核心类库外)。如何开发自己的类加载器:继承自ClassLoader,重写findClass(),方法内获取到字节码后调用父类的defineClass()即可。不可重写loadClass()(LoadClass内部实现代理机制逻辑)虚拟机的类加载机制:虚拟机把描述类的数据class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可被虚拟机直接使用的java类在类装载到一个jvm中需要经过加载——>链接->初始化(a)校验:检查载入Class文件数据的正确性;(b)准备:给类的静态变量分配存储空间;(c)解析:将符号引用转成直接引用;2.垃圾回收算法a.引用计数法通过对一个对象增加一个计数器方式实现。优点:实现简单缺点:无法解决循环引用问题b.标记-清除算法通过根节点,标记所有从根节点可达的对象,然后将未被标记的对象进行清除。、优点:可解决循环引用问题缺点:造成内存碎片c.复制算法将原有内存划分成两块,每次只使用一块,回收时将正在使用的内存中存活的对象复制到另一块内存中,然后清除之前内存中剩余的对象,互换两块内存的角色。优点:如果存活对象很少,那么需要复制的对象将很少,效率很高,同时内存也会连续缺点:将内存折半d.标记-压缩算法使用标记方式寻找存活对象,然后将存活对象压缩到内存的一端,清理到外界的内存即可。优点:内存连续缺点:需要移动对象,所以需要改变很多引用地址e.增量算法该算法是为了解决Stop-The-World问题,即进行垃圾收集时需要暂停应用程序,所以为了减少应用程序暂停的时间,将垃圾回收过程分批进行。有点:降低应用程序暂停时间缺点:增加线程上下文切换时间,降低系统吞吐率f.分代将内存分成不同的块,针对不同内存块对象的特征采用不同的垃圾回收算法。例如:HotSpot将内存分成年轻代和老年代,年轻代的特征是对象量多,但是存活对象较少,适合采用效率较高的复制算法,将存活对象复制到另一块内存,可以解决内存碎片问题;而老年代对象生命周期较长,且对象较大,故适合采用标记-压缩算法。3.垃圾回收器类型a.新生代串行收集器(DefNew)b.老年代串行收集器(DefNew)c.并行收集器(ParNew)d.新生代并行回收收集器(PSYoungGen)e.老年代并行回收收集器(PSYoungGen)f.CMS收集器g.G1收集器4.JVMa.JVM内存模型:JVM内存模型分成:程序计数器、虚拟机栈、本地方法栈、堆、方法区五个区域b.程序计数器、虚拟机栈以及本地方法栈属于线程私有,而堆和方法区是线程共享的。c.程序计数器保存当前线程执行的字节码行号,线程在执行每个方法时都会在虚拟机栈上创建一个栈帧,栈帧中主要保存本地变量表、操作栈等信息,本地方法栈是用于本地方法调用的,如果线程当前执行的是本地方法,那么程序计数器为null。d.方法区保存Java的类信息、静态变量、JIT编译的本地代码等,常量池在JDK1.7已移到堆中。e.堆保存着程序运行过程中创建的所有对象信息。堆还可细分成:年轻代和老年代,年轻代还可细分为:一个eden区和两个survivor区(from和to)。对象的创建是在eden区,大对象有可能直接在老年代创建。f.针对年轻代和老年代对象的不同特征,垃圾回收器对年轻代采用复制算法,而老年代采用标记-压缩算法。年轻代由于存活对象不多,而且对象较小,直接采用复制算法会有很高的效率;老年代由于存活对象较多,且对象较大,使用标记算法较好,同时为了避免比较算法产生的碎片,采用压缩算法进行压缩。5.类加载机制1)类加载时机主动引用a.new对象、访问类的静态属性与调用类的静态方法时b.反射调用时c.初始化类时,需先初始化父类d.虚拟机启动时需指定一个主类,虚拟机会先初始化该类被动引用a.使用子类访问父类的静态变量或调用父类静态方法时只会初始化父类,不会初始化子类b.定义一个该类的数组并不会引发类的初始化c.引用类的常量(finalstatic)不会引发类的初始化,因为常量会被保存到常量池,所以引用常量直接引用常量池,并不通过类2)类加载过程加载–>验证–>准备–>解析–>初始化加载通过类加载器进行加载,代理方式验证主要用于对class内容进行安全性校验准备是在方法区为类分配内存,并将类属性置0解析将字符串常量池内的符号引用替换为直接引用初始化主要是对类的初始化,即为静态变量赋值,执行静态语句块3)强引用,弱引用和软引用6.文件读取过程a.确定所请求的数据分布于文件系统的哪些页b.在内核空间分配足够的内存页,以容纳确定的文件系统页c.在内存页与文件系统页之间建立映射关系d.通过虚拟内存将页面调入,从磁盘上读取页面内容e.页面调入完成,文件系统对原始数据进行解析,取得所需文件内容或属性信息7.NIO1)文件锁:文件锁是针对进程级别的,如果一个JVM中有一个线程已获取文件锁,另一个线程再获取就会抛出OverlappingFileLockException异常。请求两个共享锁也不行。2)NIO与IO的区别:数据打包与传输的方式不同。旧的IO以流的方式处理数据,而NIO以块的方式处理数据。现代的操作系统都是按块从磁盘获取数据,所以NIO将比旧IO在数据处理上效率高很多。8.Http协议1)请求内容:请求行:方法URI版本号POST/reg.jspHTTP/(CRLF)请求头(消息头):请求头包含如Content-Length、Accept等参数请求体(消息正文):传递的数据,如POST的内容2)响应内容:状态行:服务器Http版本号状态码状态代码描述响应头:响应体:8.Java代码优化普通代码方面:1)在集合的长度可知情况下使用带有指定初始化容量的集合构造器2)单线程情况下使用非线程安全的类,而非线程安全的,如StringBuffer和HashTable3)避免错误使用异常机制,除非是是在无法判断是否会发生异常的情况下才使用,如可预先判断异常状态则预先进行条件判断而避免使用异常机制4)尽量使用final常量,避免过多的使用static变量(由于static变量和方法很难回收,需要回收该Class信息,需回收对应的ClassLoader)5)尽量使用局部变量,因为局部变量保存在栈中,访问速度高于堆并发方面:1)尽量使用线程池,并合理设置线程池的大小,如CPU密集型任务使用CPU+1,IO密集型任务使用2*CPU2)不要轻易使用锁,降低锁的粒度,合理使用读写锁3)使用JDK提供的高效的并发工具类,如J.U.C下的并发集合类,以及原子类9.redis和memcached区别1)redis支持丰富的数据类型,memcached仅支持单一的k-v数据类型2)redis支持数据持久化,如AOF和RBD,memcached不支持,重启后数据就全部丢失3)memcached支持CAS,redis只能通过将多个操作组合到一起顺序执行的方式实现很简单的事务机制10.mysql两个存储引擎区别InnoDB支持事务和行级锁以及外键MyISAM不支持事务和行级锁以及外键,只支持表锁11.CPU100%如何分析通过top-H查看CPU占用率最高的线程ID,找到线程ID之后,可以通过JDK提供的JVM监控工具,如jstack将线程的堆栈信息打印出来(需要将十进制的线程ID转成16进制)。一般占用CPU很高的情况有:1)死循环2)密集型计算12.如何设计数据库1.表名要能体现出属性的含义2.动静分离,将一个表的变化的属性与不变的属性分开13.数据库索引问题1.MySQL仅能对索引最左边的前缀进行有效的查找例如:索引(a,b),select*fromtablewherea=a1andb=b1和select*fromtablewherea=a1可以走索引,但是select*fromtablewhereb=b1不走索引,因为没有组合索引的引导列2.支付范围查询————————————————版权声明:本文为CSDN博主「greekw」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:/w2cschool/article/details/8006641630.了解哪些开源的中间件?缓存?消息?分布式框架?31.用到过哪些设计模式?单例模式的实现?32.数据库的事务实现原理、操作过程、如何做到事物之间的独立性等问题33.数据库的脏读,幻读,不可重复读出现的原因原理,解决办法34.数据库的隔离级别、MVCC35.乐观锁、悲观锁、互斥锁、读写锁的原理实现与区别36.线程的生命周期37.一致性hash算法原理与应用38.CAP原则40.分布式raft算法1.B+树、B-树的区别?2.数据库隔离级别,幻读和不可重复读的区别?3.有hell,well,hello,world等字符串组,现在问能否拼接成helloworld,代码实现。4.快排算法实现5.线程安全的单例模式6.25匹马赛跑,有一个赛场,只有五个赛道,没有计时器,只能通过目测来记录快慢,求出第三3快的马要多少场比赛?7.kmp算法next数组的求解思路8.数组中有三个数字出现超过3/4,求这三个数字?9.1到n+2个数组中缺了两个数,如何用O(n)时间,O(1)空间找到这两个数字。10.一条线段长为1,随机选两个点,将改线段分为三段,三段能成三角形的概率是多少?11.有一个教授,他三个学生,脑袋背后分别各写了一个数字,其中一个数字是另外两个数字的和,经过几轮后,有一个学生猜出了自己的数字请问是什么原因?12.B+树做索引时,B+树通常高度为多少层?要参考哪些条件?1.static有什么用途?(请至少说明两种)2.引用与指针有什么区别?3.描述实时系统的基本特性4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?5.什么是平衡二叉树?6.堆栈溢出一般是由什么原因导致的?7.什么函数不能声明为虚函数?8.冒泡排序算法的时间复杂度是什么?9.写出floatx与“零值”比较的if语句10.Internet采用哪种网络协议?该协议的主要层次结构?11.Internet物理地址和IP地址转换采用什么协议?12.IP地址的编码分为哪俩部分?13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。14.不能做switch()的参数类型是15.intA[nSize],其中隐藏着若干0,其余非0整数,写一个函数intFunc(int*A,intnSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。16.写一个程序,要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数17.实现一个函数,把一个字符串中的字符从小写转为大写18.随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数19.求2~2000的所有素数.有足够的内存,要求尽量快20.A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。21.将单向链表reverse,如ABCD变成DCBA,只能搜索链表一次。22.将二叉树的两个孩子换位置,即左变右,右变左。不能用递规。23.以下属于物理层的设备是?24.在以太网中,是根据()地址来区分不同的设备的?25.以下为传输层协议的是?26.以下对MAC地址描述正确的是?27.以下属于数据链路层功能的是?28.IEEE802.3u标准是指?29.如果要将两计算机通过双绞线直接连接,正确的线序是?30.在V.35和V.24规程中,控制信号RTS表示?31.路由器作为网络互连设备,必须具备以下哪些特点?32.路由器的作用有?33.调用上一条历史命令的快捷键是?34.交换机工作在OSI七层的哪一层?35.以下对CSMA/CD描述正确的是?36.以下对STOREANDFORWARD描述正确的是?37.以下对交换机工作方式描述正确的是?38.VLAN的主要作用有?39.在交换机中用户权限分为几个级别?40.在路由器的配置过程中查询以S开头所有命令的方法是?41.第一次配置路由器时可以使用的方法为?42.在何种状态下可以为路由器改名?43.某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有26台计算机,每个子公司在一个网段中,则子网掩码应设为?44.与9mask24属于同一网段的主机IP地址是?45.ARP协议的作用是?46.当路由器接收的IP报文的TTL值等于1时,采取的策略是?47.在NetWare网络中,客户需要访问某个类型的服务器时,首先要发送一个()广播报文来寻找服务器?48.IPX地址网络地址有()个字节?49.对于帧中继描述正确的是?50.对于INVERSEARP的描述正确的是?1.1并发编程进阶线程共享和协作并发工具类实战站在巨人肩上操作CAS阿里面试常问的显示锁和AQS并发容器源码解析及应用实战仅会用线程池是不够的架构师应该知道的并发安全解决方案性能优化实战并发编程面试题目汇集1.2JVM性能深度调优15种方式编写高效优雅Java程序实战Java内村区域深入解析垃圾回收器和内存分配策略你必须知道的JVM执行子系统JVM类加载机制及执行引擎原理JVM性能优化实战JVM面试锦囊妙计1.3网络编程与高效IOhttp/tcp/udp网络协议原理透析原生JDK网络编程Netty应用快速入门Netty粘包/半包问题解决实战Netty进阶和实战Netty源码深入分析Netty常被问到那些面试题汇集1.4深入Tomcat底层10分钟熟悉你常用却又不知道的Tomcat体系架构你必须得知道的Tomcat容器及运行机制Tomcat类加载机制分析Tomcat核心组件源码解读Tomcat高级进阶Tomcat面试题整理1.5MySQL深度优化MySQL存储引荸选型及注意事项解读MySQL的共享锁及排它锁MySQL事务及隔离性级别30分钟深入掌握执行计划解读BTree与B+Tree索引SQL慢查询配置及分析SQL优化策略及实战MySQL面试题汇总1.6架构基础必备LinuxLinux安装指南Linux基础命令用户与用户组系列操作文件与权限系列操作架构师应该掌握的shell脚本基础二、设计思想解读开源框架2.1六大原则单一职责原则开闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则2.2结构型模式桥接模式适配器模式装饰器模式代理模式组合模式2.3创建型模式建造者模式单例模式抽象工厂模式工厂方法模式静态工厂模式2.4行为型模式模板方法模式策略模式观察者模式责任链模式命令模式访问者模式2.5Spring5源码解读5分钟快速理解Spring核心流程熟练掌握Spring工作常用注解及陷阱后置处理器源码解读I0C容器源码解读AOP源码解读声明式事务源码解读Spring源码面试题汇总2.6SpringMVC框架源码解读Servlet3.06性能实战手写SpringMVC实战2.7Mybatis框架源码解读5分钟掌握MyBatis的配置使用动态SQL、缓存及关联查询深入讲解10分钟掌握Mybatis与Spring的集成实战Mybatis插件开发及源码分析实战多级关联实战手写MyBatis框架实战Mybatis常见面试题汇集三、性能直升提升架构技术3.1分布式架构思维大型互联网架构演进过程架构师应具备的分布式知识主流分布式架构设计详解3.2Zookeeper5分钟搞定Zookeeper安装及指令解析原生客户端、zkclient、curotor快速开发实战Zookeeper应用实战Zookeeper底层协议解读Zookeeper面试资料整理3.3Nginx5分钟将你的项目实现Nginx分流Nginx安装及基本使用Nginx进程模型及配置详解location规则及rewrite解析动静分离实战反向代理实战跨域配置实战缓存配置及Gzip配置实战https安全认证实战LVS高可用实战Nginx那些面试题汇总3.4消息中间件概述消息中间件和RPC的区别消息中间件使用场景介绍ActiveMQ、RabbitMQ、RocketMQ、Kafka对比消息中间件的编年史3.5ActiveMQ3分钟快速安装ActiveMQJMS规范解读原生ActiveMQ的API编程ActiveMQ高级特性和用法限时订单实战用户注册的异步处理实战企业级高可用集群部署实战3.6RabbitMQLinux下安装与配置消息发布与消费权衡消息的拒绝怎么解决控制队列与消息属性与Spring集成完成应用解耦实战集群化与镜像队列实战RabbitMQ常见面试题汇总3.7RocketMQRocketMQ快速安装与配置消息发送与消费流程解读RocketMQ消息存储、消

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论