小菜鸟之面试题下

Posted czg-0705

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小菜鸟之面试题下相关的知识,希望对你有一定的参考价值。

  1 1 nio是什么?原理是什么?解决什么问题?如何实现?
  2     nio是nonblocked io 非堵塞流
  3     核心类有 Channel/Selector/Buffer
  4     解决高并发情况下流的阻塞问题
  5 
  6 2.IO/NIO的区别,为什么要用NIO,使用IO中的Buffered..也能实现NIO的面向缓冲,什么情况下用NIO?
  7     io面向流/nio面向缓冲的
  8     io是阻塞的/nio是非阻塞的
  9     io没有选择器/nio有选择器
 10     举例:
 11     就是将100个客人的需求被登记区记录排序,然后让10个服务员(线程)到登记区(selector)领需求,完成后再返回领    需求,这样效率高
 12     文件超大时候,使用nio缓冲区MappedByteBuffer,读写性能高,而且是异步的
 13       14       15 3  什么是同步?什么是异步?
 16     同步:程序的执行顺序和任务的排列顺序保持一致的,好比排队取餐
 17     异步:程序的执行顺序和任务的排序顺序可以不一致,因为每个任务都有一个回调函数,
 18            回调函数将原来的任务分担出一些功能,给原来的任务减负,程序执行任务耗时缩短    ,比如ajax技术
 19 
 20 参考
 21 
 22 http://blog.csdn.net/zhouhl_cn/article/details/6568119(比喻介绍IO/NIO的区别)
 23 
 24 https://my.oschina.net/u/1010990/blog/192558(区别与比较)
 25 
 26 http://ifeve.com/java-nio-vs-io/
 27 
 28    29 
 30 2.熟悉的排序算法有哪些,快速排序算法的实现原理?
 31 
 32 常见的冒泡排序、选择排序、插入排序、归并排序、快速排序算法原理弄明白
 33 
 34 参考:http://blog.csdn.net/ygc87/article/details/7208082
 35 
 36    37 3.HashMap与HashTable与ConcurrentHashMap有什么区别?HashMap的存储结构?
 38 ConcurrentHashMap是HashTable的替代品
 39 使用了多个锁代替HashTable中的单个锁,也就是锁分离技术
 40 
 41 HashMap回答是hash结构存储会继续问如果相同的值要存储在指定位置冲突了怎么解决,冲突的取的时候怎么取保证数据准确
 42 
 43 hashmap可以接收null的key和value
 44 
 45 concurrenthashmap不允许key value为null
 46 
 47 参考:http://www.cnblogs.com/ITtangtang/p/3948786.html
 48 
 49 https://yq.aliyun.com/articles/38213
 50 
 51    52 
 53 4.vector、ArrayList、LinkedList区别及存储性能。
 54 
 55 ArrayList:数组结构,查询快,线程不安全,通过工具类Collections中的synchronizedList方法编程线程安全的
 56 Vector:数组结构,查询慢,线程安全,属于遗留容器,不推荐使用
 57 
 58 LinkedList:双向链表结构,增删快,线程不安全
 59 参考:
 60 http://www.jb51.net/article/75093.htm
 61 http://www.cnblogs.com/jiangyi-uestc/p/5682699.html
 62 
 63 5.多线程实现的几种方式,有什么区别,一般用哪个,为什么?
 64 实现Runnable接口、继承Thread类执行线程无返回值
 65 使用Callable,ExecutorService,Future接口,线程执行都有返回值
 66 参考:http://www.cnblogs.com/felixzh/p/6036074.html
 67 
 68 
 69 6.多线程中线程池怎样使用及其实现原理?
 70 http://blog.csdn.net/qq_31753145/article/details/50899119
 71 
 72    73 7.volatile关键字的作用是什么?
 74     在成员变量之前添加volatile关键字,使其对多线程(任务)具有可见性
 75     为了线程安全,使用volatile修饰成员变量,sychronized修饰方法或者代码块,条件允许,尽量使用    同步代码块,因为有些方法不需要对整个方法加锁,而是对方法中的关键几步加锁
 76 
 77     补充:java内存模型中 内存里的数据具有 可见性/原子性/有序性三大特性
 78         可见性:一个线程修改某个变量的值后,其他线程可以看见修改结果
 79         原子性:最小单位,不可分割的,比如 a=1是原子操作(a非long或double类型)
 80             a=a+1;是非原子操作,a是可变的
 81         有序性:多个线程操作共同资源(属性或方法),必须要先排序后操作
 82 参考:http://www.cnblogs.com/paddix/p/5428507.html
 83 http://www.infoq.com/cn/articles/java-memory-model-4/
 84 
 85 
 86 8.synchronized关键字的作用,使用该关键字后保证同步了,同步代码块与同步方法有什么区别?
 87     sychronized修饰方法或者代码块,条件允许,尽量使用同步代码块,因为有些方法不需要对        整个方法加锁,而是对方法中的关键几步加锁,同步方法锁定的范围太大,严重延长其他线        程的阻塞时间,降低效率
 88 参考:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html
 89 
 90    91 9.多个对象对同步方法一定能保证同步吗?多个对象对静态同步方法保证同步吗?两个静态同步方法能保证同步吗?
 92 
 93 多个 对象对同一个同步方法不能保证同步
 94     主要看需要同步的方法:若是静态方法,那是类的方法,锁针对的是类的,独享一份,可以保证同步
 95                   若是非静态方法,那锁针对的是对象的,一个对象一个同步方法
 96 
 97 参考:http://www.cnblogs.com/hapjin/p/4678773.html
 98 
 99 http://topmanopensource.iteye.com/blog/1738178
100 
101 
102 10.start方法与run方法的区别?
103     start是启动线程,让线程进入排队序列,等待jvm调用run方法
104     run是直接运行方法
105 参考:http://blog.csdn.net/xuxurui007/article/details/7685076
106 
107 11.一个线程可以多次start吗,会报错吗?
108     这个会报非法异常IllegalThreadStateException
109 
110 12.线程中通过什么方式传输数据?使用过队列,为什么要使用队列,何种情况下使用队列?
111     io流方式传输数据
112     消息队列activemq组件
113 
114 13.spring AOP IOC实现原理?
115     ioc是控制反转
116     aop 是面向切面编程 业务类和通用类进行横向切割,通用类通过代理的方式实现
117 
118 14.spring中的事务的传播方式怎样实现的?
119     事务传播就是一个业务使用到多个被事务化的方法,如何决定用哪些事务组合
120     Propagation传播行为类型有7种,比如propagation_required/propagation_supports等
121          122 15.spring中事务实现的原理?
123     实现PlatformTransactionManager接口,根据不同的平台实现不同的事务功能
124     编程式事务 和注解式事务
125   126 16.springmvc实现原理?
127     DispacthServlet/HandlerMapping/HandlerExcutionchain/
128         HandlerAdapter/Handler/ViewResolver/View
129 
130 17.为什么要使用数据库索引,数据库索引有哪些,索引的底层原理是什么?
131     避免全表的遍历查询,提高查询性能
132     创建索引:CREATE INDEX index_name ON table_name
133     删除索引:DROP INDEX table_name.index_name
134     主键索引/唯一索引/复合索引等
135     b+tree的数据结构
136 
137 18.sql查询缓慢怎么处理,sql优化方案有哪些,explain用过吗?
138     建立索引
139     explain语句检测sql语句,比如explian select * from table_name      140 
141 19.数据库中的锁有几种?
142     比如行锁、表锁、读锁、写锁
143 
144 20.数据库为什么要使用事务,事务的原理?
145     保证数据库数据的准确性和安全性
146     一起执行或者一起回滚
147 
148 21.oracle数据库的分页怎样实现?
149     伪列rownum
150     select *  151     from (select t.*,rownum from table_name t)
152     where rownum>=(pageNo-1)pageSize and rownum<=(pageNo)*pageSize;
153 
154 22.数据库分库分表的方法,垂直分还是水平分,根据哪些来分?
155     垂直分库 按照业务分成多个数据库。一个数据库放客户表/订单表 变成 2个数据库 一个放             客户表,一个分订单表,类似 微服务
156     垂直分表
157         按照字段拆分成多表 c1,c2,c3-->c1,c2和c1,c3
158     水平库内分表         159     水平分库分表
160   161 
162 23.solr搜索实现原理、使用的排序算法是什么,怎样实现快速查询?
163      用户提交请求到solr搜索引擎模块,搜索引擎模块事先将数据库信息导入其中,同时搜索引            擎有增量更新机制。
164     权重排序法
165     建立全文索引
166      167 
168 24.3次握手的原理是什么?
169     第一次:客户端向服务端发送请求连接包
170     第二次:服务端向客户端发送请求包和确认包,表示请求收到,并且请求连接
171     第三次:客户端向服务端发送确认收到请求的确认包,两端连接成功
172 
173 25.动态代理实现原理是什么和动态代理使用的方法、类有哪些?
174     创建一个代理类实现InvocationHandler,重写invoke(Proxy proxy,Method method,Object             args)方法
175     invoke()/InvocationHandler接口
176 
177 
178 26.webservice hessian区别?
179 
180   181 
182 27.redis的数据结构有哪些?
183 
184 字符串(String)、散列(Hash)、列表(List)、集合(set)、排序集合(sort set)
185 
186   187 
188 28.虚拟机了解多少?
189     组成
190     类加载器
191     运行时数据区
192         方法区(类信息/静态成员变量/常量池)
193         堆
194         程序计数器
195         虚拟机栈
196         本地方法栈
197     本地方法接口
198     执行引擎
199 
200 
201 29.spring默认是单利还是多例的?
202 
203     默认单例 Singleton /prototype/request/session/global session(scope)
204 
205 
206 30.mybatis中#$的区别?
207 
208 #防止sql注入 ,相当于占位符,传入的语句是加单引号的
209 $一般用于传入数据库对象,例如传入表名.  210 
211 区别:#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
212 参考:http://blog.csdn.net/downkang/article/details/12499197/
213 
214 31.常用的队列Queue有哪些?什么情况下使用?
215     队列是一种先进先出(First In First Out,FIFO)的数据结构
216     LinkedList /Vector
217 
218 常见的消息队列有哪些?各自特点?
219     解决问题:高并发问题
220     其实对于这些消息队列的产品,每一种都在某一领域占有一席,虽然ActiveMQ目前在社区已            经不是很活跃,但是其下一代产品Apollo已经问世。ZeroMQ小而美,RabbitMQ大而稳,Kakfa            和RocketMQ快而强劲。
221   222 32.线程的几种状态及其切换?
223 
224 创建态 就绪态 运行态 阻塞态 终止态
225 
226   227 33.网页中常出现的代码?
228 200 ok  229 403 访问被禁止  230 404 页面找不到  231 500 服务器问题
232 参考:http://www.cnblogs.com/ctaixw/p/5075727.html
233 
234 34.数据库的特性?
235 ACID 原子性 一致性 隔离性 持久性 atomicity/consistency/isolation/durability
236 
237 35.java7 8有哪些新特性?
238     java 7 switch case 支持字符串
239     java8 主要是拉姆达表达式操作集合
240     java9 主要是模块化
241 
242 36.你知道的线程安全的类有哪些,方法有哪些?
243     StringBuffer /HashTable/ConcurrentHashMap/Vector
244   245 37.数据库的乐观锁和悲观锁的原理及使用?
246     乐观锁:乐观的认为数据记录可能没有被修改,使用version方式操作数据库;
247     语法: update table_name set 某字段=新值,version=version+1 where version=#             {version}and id=#{id}
248     悲观锁:悲观的任务,数据记录肯定被修改了,处处加锁(表锁/行锁/读锁/写锁),思想同            “sychronized”
249   250 38.用过的中间件有哪些?
251     常用的中间件 比如dubbo+zookeeper(分布式框架)/ rocketmq /redis 等
252 
253 39.如果让你对外开发一个接口,你会考虑哪些因素?
254      可扩展性/功能单一
255 
256 40.设计数据库的时候会考虑哪些因素,怎样去建表?
257     避免数据冗余
258     数据的完整性
259     表与表的主外键关系
260     第一范式:确保字段的原子性
261     第二范式:确保每个字段都和主键有直接关系
262   263 41.对于建表,大部分表中哪些相同的字段会都考虑包含?
264     id/添加人/修改人/添加时间/修改时间
265 
266 42.对GC了解多少?
267     Object.finalize()/System.gc() 隐式回收
268      269 43.linux权限分组
270     初创建一个用户user1,系统默认生成user1组,user1用户默认是user1组内成员
271     新建一个文件,默认创建者是owner
272     每个文件对应的owner/group/other可以设置不同权限,
273     权限分类:r/w/x
274     chmod u+a file 改变文件的权限
275     chown hw file 改变文件的owner
276     chgrp root file 改变文件的归属组为root管理员组
277 
278 44.Integer与int的区别,什么情况下使用Integer什么情况下使用int,Integer是否有缓存?
279     Integer中有一个静态的内部类IntegerCache,内部类中有个cache[]常量池,分配内存空间时            一个字节
280     当默认值为0时使用int,一般进行算数运算时使用int
281     默认值为null时使用Integer 对象,调用方法和属性时使用
282 
283 45.堆和栈的区别,堆中存放什么,栈中存放什么?
284     方法区:类信息/静态成员变量和方法和代码块(不存在静态的局部变量之说)/常量(常量            池)
285     堆:new对象/
286     栈:局部变量/对象引用/基本数据类型
287   288 
289 46.springmvc中controller线程安全吗?
290     安全,单例的,前提是Controller内没有实例变量,若是有实例变量的话,线程不安全
291 
292 47.springmvc中controller方法中为什么不能定义实例变量?
293      线程不安全,一个请求,修改该变量的值,同时会被另一个请求读取到,会造成数据错误
294 
295 48.union 与union all区别?
296   union是联合查询,将两表查询结果中的重复记录合并成一条;
297   union all 是不合并,都保留
298   299 49.count(1) count(5) count(*)有什么区别,100万条数据的效率如何?
300     count(*)统计包含null值的行数
301     count(1)统计不包含null值的行数
302     count(1)中的1表示系统自动添加字段名为1,对应的值也是1的列,然后统计1出现的次数
303     count(5)同理count(1)
304 
305 
306 50.left join right join 区别?
307     left outer join 是以左表为基准,每条记录和右表进行匹配,匹配成功时,
308     连接成一条数据记录;匹配不成功的话,右表以null值和左表连接成一条记录
309 
310 51.inner join与join的区别?
311 
312 无区别。join默认时 inner join
313 
314 
315 52.数据库设计遵循的三范式?
316 
317  第一范式 :确保字段的原子性
318  第二范式: 确保每个字段都和主键有关
319  第三范式: 确保每个字段都和主键有直接关系
320 
321 53.springmvc中的拦截器的作用?
322     拦截请求和分配请求到指定的控制器 DispatchServlet
323 
324 54.Springmvc拦截器与java过滤器的区别?
325     拦截器依赖spring容器,使用Spring中任何资源,过滤器依赖servlet容器
326     拦截器是通过反射机制实现的,过滤器是通过方法调用
327     filter的生命周期
328         实例化限一次--》init()限一次--》doFilter()反复多次--》destroy()
329     servlet的生命周期
330         实例化
331         init()限一次
332         service()提供服务
333         destroy()销毁
334 参考:http://blog.csdn.net/chenleixing/article/details/44573495
335 
336 55.webservice使用的的什么语言,使用的什么协议?     337     wsdl描述语言 soap协议
338 
339   340 56.springmvc注解@pathVariable的作用?
341 
342   @PathVariable 是路径变量:将URL中的占位符参数 绑定到控制器中方法的形参中
343    344 
345 57.java虚拟机内存怎么调整?
346 
347 http://jingyan.baidu.com/article/a948d6516670880a2dcd2e2c.html
348 http://www.cnblogs.com/happyPawpaw/p/3868363.html
349 
350 58 gc的运行原理是什么?
351     隐式的被调用object.finalize(),进行垃圾回收前的准备工作
352     ; system.gc()
353 
354 59 JVM内存管理机制和垃圾回收机制(基本每次面试都会问,一定要搞得透彻)
355     jvm将内存划分为  356         方法区(类信息/静态域/运行时常量池)
357         堆(new对象、数组)
358         程序计数器
359         虚拟机栈(局部变量、对象引用、基本数据类型)
360         本地方法栈(native方法)
361 60 GC回收机制  哪些内存需要回收?
362     java堆、方法区的内存
363 
364 ——when  什么时候回收?
365     根据 引用计数法(当引用次数等于0时,回收)
366              可达性分析 (当对象找不到gc root根对象时,回收)
367     来分析是否需要回收
368 
369 ——how  怎么回收?
370     标志算法(将找不到根对象的对象做标志,然后回收)
371     复制算法(将内存一分为二,这一块满了,复制到另一块上,然后将这一块内存回收)
372     分代算法(按照存活时间,将方法区中对象分为新生代(使用复制算法回收)和老年代(使         用标志算法回收),堆中的对象称为永久代)
373          374 
375 61 JVM内存调优(了解是怎么回事,一般做项目过程中使用较多)
376     堆大小的设置
377     回收器的选择
378      379 
380 62  设计模式(熟悉常见设计模式的应用场景,会画类图,实在不行背几个也是有用的)
381     单例模式/工厂模式/代理模式
382 
383 63  多线程(每次都会问,包括线程和进程、线程状态、线程并发的操作等,需要深入复习)
384      线程是cpu调用程序的最小单位
385     进程是运行中的动态程序,有一个一个线程构成
386     线程状态 新生/待运行/运行/阻塞(同步阻塞、wait阻塞、其他阻塞)/死亡五个状态
387     线程并发:单核cpu只能一次处理一个任务(线程),也就是一个时间片内处理一个线程
388          389          390 64  JAVA集合类框架(理解框架图、HashMap、ArrayList、HashSet等的关系和区别,其中HashMap的存储机制几乎每次都有问)
391     Collection (List (ArrayList/)
392              Set )
393     Map
394     hashmap是通过数组和单链表数据结构实现的
395         默认数组容量是2^4,最大容量2^30;当默认数组容量占用了3/4时,进行扩容一倍
396         hash算法生成数组下标,8进6退 红黑树
397 
398     hashTable是多线程的,hashMap是单线程的
399      400 
401 65 JAVA的异常处理机制(异常的分类、常见的异常有哪些、Try catch finally的使用)
402     throwable (error/exception)
403     空指针异常NullPointerException/类型转换异常ClassCastException/下标越界异常            ArrayIndexOutOfBoundsException/算术异常ArithmeticException
404 
405 
406 66 Linux基础(面试笔试中对linux也有一定的要求,建议最好搭建一个linux虚拟机,并练习常用的命令)
407     chmod a+rwx folder
408 
409 67、jvm调优,tomcat调优
410 
411 68、arraylist和linkedlist区别
412     数组列表  链式列表
413 
414 苏宁金服:
415 69、问的项目业务,公司业务模块(无从下口)
416     用户模块/订单模块/库存模块/线路模块/采购单模块
417 
418 70、为什么要用redis,相比于如memcached,mongodb有什么优势?
419     redis是存储在内存中的,以键值对形式存储;
420     与memcached比较,redis存储速度快,数据可以持久化保存在磁盘上;
421     mongodb是面向文档,存储json数据居多;
422      423 
424      425 71、springmvc和struts区别(都不会).
426     mvc基于类中的方法,struts是基于类本身;
427     mvc通过Dispatherservlet处理请求,structs是通过过滤器Filter    (StrutsPreparedAndExcuteFilter)
428      429 72、用过什么数据库,有没有做过数据库优化,什么情况下要用到索引,好处是什么,
430     mysql、Oracle、redis、
431     谨慎使用*/子查询/创建索引/索引字段放在筛选条件的第一位
432 
433 73、哪些字段适合建立索引,mysql索引底层数据结构了解吗,索引什么情况下会失效,联合索引abc只用了a字        段,索引是否会生效。
434     字段长度小/不重复/数字/
435     b+tree数据结构
436     会生效,遵循最左原则
437         sql语句中where筛选条件中有 or时,会使索引字段失效,通过explain测试
438         解决方案:将or中的所有字段都设置成索引
439         name like ‘%a‘查询是以%开头,会使name索引失效
440          441      442 74、什么情况下要用到多线程,为什么要用,好处。启动多个线程,如何知道他们都运行完毕了。
443     应用场景:tomcat处理多个请求用到多线程
444               处理多个io流是也会用到多线程
445     通过运行多个程序的时候
446     ,提高cpu的利用效率
447     调用CountDownLatch类(计数器)中的countDown()方法
448 
449 75、jquery要想取某个节点中的第几个元素怎么写,具体哪个方法?
450     $("ul").find("li").eq(3)
451 
452 苏宁易购网站购物车消费者业务线:
453 76、string为什么是不可变的,
454     成员变量:字符数组 char value[] 是final修饰的,不可变的
455 
456 77 sleep和wait区别?
457     sleep自动唤醒,wait需要人工唤醒
458     有锁的情况下,wait会释放锁,sleep不会释放锁
459 
460 78 实现线程的方式,
461     实现Runnable Callable
462     继承 Thread
463      464 79 run,start区别,
465     start使线程进入可运行状态,进入线程队列和其他线程一起争夺cpu资源,
466     抢夺成功后,jvm调用run方法
467     run 是调用方法,使线程直接运行
468 
469 80 synchronize实现原理与lock区别?自旋锁是什么?
470     实现原理
471     区别
472         sync自动释放锁,lock手动释放锁
473      474     自旋锁就是线程在等待锁的时候,不会进入阻塞状态,而是无目的的自我旋转运行。
475         简而言之,就是自旋的方式获得锁。
476         好处:减少了运行到阻塞再到运行这一过程产生的内存开销。
477      478 81 线程池,线程池等待队列,拒绝策略,死锁产生原因。
479      480 82 事务特性,索引失效,mysql有哪些函数。
481     acid 原子性 一致性 隔离性 持久性
482     条件 or  like"#   String类型的没有加``(撇号)
483 
484 83 http和https区别是什么?
485     http是明文传输,https是密文传输
486      487      488 84 get和post区别?
489     get 能被缓存,再次刷新不会重新发送请求,能收藏为书签,能保留在浏览历史中
490     get 将参数放在url中传递,post放在requestbody中
491     get 传递的信息不能超过2048kb,post没有限制
492     get 传递参数是可见的,不安全,post相对安全
493 
494 85 springbean是单例吗,spring源码看过吗,其中的单例bean是怎么实现的。
495     Springbean单例是指一个Spring容器中只有一个某对象
496     ApplicationContext ac=new ClassPathXmlApplicationContext("");//一个Spring容器
497     ac.getBean("idVal")//获得单例bean
498     通过单例注册表的方式实现单例的
499 
500 86 redis有支持哪些数据结构。servlet怎么取前端参数?
501     String hash list set zset
502 
503 87 设计个洗牌算法。
504     2i  %  n+1
505 
506 88 线上购物车需要有个标志唯一id,有什么方法实现这个id(uuid,参考jdk中random实现原理,取随机种子
507     util.UUID  508         String uuid=UUID.randomUUID().toString().replace("-","")
509 
510 89 大数据部门:抽象类接口区别?
511     抽象类不一定有抽象方法,接口要有抽象方法
512     抽象类被子类继承,接口与实现类之间没有继承关系
513     抽象类是对子类中共同属性和方法的抽离,减少代码的重复
514     接口是一种功能的规范
515 
516 90 接口中可以定义成员变量吗,默认是什么类型的变量(public static final),接口中方法权限可以是    private吗,接口是否可以写具体实现(答:jdk8开始可以)
517     可以有成员变量,默认是public static final
518     方法权限不能是private,这样没有意义
519     接口中可以是方法的默认实现,从jdk8开始
520 
521 91 重写重载区别?
522     重写出现在父类和子类之间,返回类型、方法名、参数列表都要和父类一致,子类编写方法体
523     重载出现在同类中,与返回类型无关,方法名相同,参数列表不同
524 
525 92  线程的实现方式(我已经感觉到这个部门有多缺人了)。
526     extends Thread,implements Runnable(run方法无返回值)
527     ,Implements Callable(call方法有返回值)
528      529 93  sql交并集?
530     交集 内连接
531     并集  union 联合连接
532     差集  where  字段 not in (sql语句)
533 
534 94  事务隔离级别?
535     isolation级别
536         read_uncommitted  可以读取未提交的数据
537         read_committed  提交后读取:避免脏读
538         repeatable_read    可以重复读:避免脏读和不可重复读
539         serializable    避免了脏读(数据回滚)/不可重复读(某条记录修改update)/幻读(结        果集增减insert/delete)
540 
541 94  能调用另一个类的私有方法吗,怎么做?
542     Method method=B.class.getDeclaredMethod("B的私有方法名");
543     method.setAccessible(true);
544     method.invoke(new B());
545      546 96  如果线程池执行shutdown或shutdownNow,线程池中线程会中断吗,会出现什么异常,?
547     catch处理中该写些什么。
548     shutdown和shutdownNow是用来关闭线程池的
549     shutdown:正在执行的任务不中止,执行完毕后中止,准备执行的任务中止
550     shudownnwo: 无论执行中还是准备执行的任务一律中止
551      552 97  用过哪些concurrent包下的类,说说原子类?
553     ConcurrentHashMap,
554 98  cas操作可能会存在什么问题。
555 
556 
557 100  treemap中compartor用了什么设计模式,
558 
559 苏宁物流部
560 
561 103 servlet和jsp区别,如果没有servlet,jsp怎么跟后端交互(大概是这个意思,没听太懂,一脸懵逼)。
562     在jsp中使用java脚本实现请求分配
563 
564 104  springmvc怎么取前端数据,springmvc模式下,如果没有注解怎么取前端参数
565 (答:servlet,requset.getParameter。他问,具体在哪怎么用,也没听太懂,懵逼)。
566 
567 105  搭建springmvc项目步骤。
568     DispatherServlet/HandlerMapper/HandlerExecutionChain/HandlerAdapter/ModelAndView/解析和渲    染
569     web.xml中配置前端控制器的拦截器
570     web.xml中引入springmvc的配置文件
571     mvc配置文件中配置 视图解析器 ViewResolver 解析路径
572      573 
574 106  spirngmvc controller中定义全局hashmap,它是否是线程安全的,为什么。
575     不安全的,这个成员变量是多个请求共享的,若是一个请求修改变量值,其他请求读取到的是修改后
576     的值,线程不安全
577 
578 107  项目中用哪种方式解析xml的?
579     dom解析/dom4j解析
580 
581 
582 108  servlet生命周期。tomcat在初始化中做了什么事(答:启动socket服务端...问:没了吗?答:... 很明显    该回答的还有很多,想了解的应该是我对tomcat的理解程度,以及是否看过tomcat源码)。
583 
584 109  是否用过nginx。过滤器和拦截器的区别。
585     过滤器基于servlet容器,拦截器是基于Spring容器的
586     过滤器值初始化一次,拦截器
587 
588 110  项目中有用到缓存吗,redis有提供了哪些存储数据结构,redis持久化。
589     redis  590     String/hash/list/set/zset
591     redis可以持久化,这是优于memcached的一个特点
592 
593 111 说说java内存模型?
594     jmv将内存划分为
595         方法区(类信息/静态域/常量池)
596         堆(new对象,)
597         程序计数器
598         虚拟机栈(对象引用,局部变量,基本数据类型)
599         本地方法栈
600         本地接口
601         执行引擎
602     新生代老年代算法,你说的新生代老年代属于堆还是栈,还知道哪些gc算法,创建大对象也是在新生代分配吗,(答:直接晋升进入老年代,问:具体多大对象,答:超过eden区大小,问:你是否确定,顿时虚了,后来回去查阅过,我回答的不对,jvm这里的看点很多,涉及到优化)。新生代的算法,说说minor gc,minor gc触发条件。老年代用了什么算法,说说标记整理算法,full gc是否真正回收了废弃对象。有哪些gc策略。你觉得你的项目中如果需要jvm调优你会注重哪个分带的调优,或者说更注重哪种gc调优,为什么,具体怎么做(懵逼,随便吹了下。问:你确定吗?  顿时又虚了)。
603 
604 线上系统每天会收到20万级的数据,一个月会有百万条,并且还会递增。你如何设计数据库
605 (答:分库分表,建立索引,问:分库分表对的,还有哪些点,分库分表按什么规则分)。
606 
607 
608  112 jdbc连接步骤?
609    加载驱动  610     Class.forName("com.mysql.jdbc.Driver");
611    创建连接对象
612     String url="jdbc:mysql://localhost:3306/databasename";
613     Connection ctn=DriverMananger.getConnection(url,user,password);
614    对sql语句进行预编译
615     String sql="select id,name from student where id=?";
616     PreparedStatement ps=ctn.prepareStatement(sql);
617         ps.setInt(1,id);
618     获得结果集
619     ResultSet rs=ps.excutionQuery();
620     遍历结果集
621     while(rs.next()){
622     Int id=rs.getInt("id");
623     String name=rs.getString("name");}
624     释放资源
625     rs.close();
626     ps.close();
627     ctn.close();
628 
629 113  statement和preparedStatement区别
630     preparedStatement 有预编译功能,同时将sql语句中参数以占位符方式表示;更安全;
631 
632 114  项目中数据库事务控制你们是怎么做的?
633     声明式事务管理,事务增强设置事务隔离等级
634     事务注解方式进行自定义事务
635      636      637 115 TreeMap,TreeSet,HashSet实现原理?
638     treeMap中元素怎么排序,如果没实现comparator接口会怎么样。序列化作用。
639     hashSet是怎么去重的?
640 
641 116 dom4j怎么取节点?
642     将xml文件转换成树结构,根据节点找对应的元素/属性/文本内容,并对它们进行增删改查
643 
644 117  为什么重写equals方法最好也得重写hashcode?
645 
646 
647 118  高并发情况下怎么降低服务器压力
648 
649 
650 119 说说hashmap数据结构
651 
652 
653 120 Lock接口有哪些实现类,说说读写锁。
654 
655 121 jdk8有哪些新增功能?
656 
657 122 spring bean的生命周期,spring的BeanFactory和FactoryBean有什么区别。
658 
659 
660 ————————————————
661 版权声明:本文为CSDN博主「四两数字先生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
662 原文链接:https://blog.csdn.net/Java_stud/article/details/91129735

以上是关于小菜鸟之面试题下的主要内容,如果未能解决你的问题,请参考以下文章

Java面试题下

leetcode 最常见的150道前端面试题(简单题下)

面向面试编程代码片段之GC

《MySQL面试小抄》查询缓存机制终面

T4模板之菜菜鸟篇

T4模板:T4模板之菜鸟篇