Java面试记录

Wesley13
• 阅读 262

首先,你需要先准备下工作相关的自我介绍,包括以下内容:

  1.几年Java开发经验,大概概括下做过什么类型的项目,分别多久经验(如互联网金融,互联网电商,传统后台等)

  2.选择1~2个近期关键项目具体介绍;

  主要担任什么岗位,工作内容是什么,也可以简单介绍下团队人员组成,你在其中是属于什么角色(如架构搭建,核心代码编写,主要做接口开发等。。。)

  项目的技术是什么(请具体到开发环境,框架,开发工具,数据库等),如有一些比较创新的技术可以具体说明

  项目成果怎么样(是否上线,用户使用效果如何等)

  个人技术总结/自己成就突出(如你们怎么处理技术难题;你自己有什么建设性意见改进项目;项目技术是否有不足,你觉得要是你会怎么去做)

  其次,你需要看下您的简历,把你简历里面写的技术点(尤其写了精通,熟悉的)再过一下。

  很多时候技术面试官会根据你简历里面写的技术点,有浅到深地提问。

  最后,以下是我们给你提供的一些Java基础技术参考题,没有答案,需要你自己去准备哦~祝面试成功,加油!

  数据库相关:求平均成绩大于60分的学生名字和他们个人的平均分。

  值传递与引用传递的区别;

  重载和重写的区别

  spring框架的IOC,AOP个人的理解

  strutsstruts2springmvc框架底层实现和他们的区别;

  hibernate框架的一级缓存和二级缓存

  java类加载器是什么,http协议

  java的内存机制

  java的数据结构

  redis基本数据类型

  spring事务的传播机制

  bean的作用

  用过什么设计模式

  单例模式多例的区别

  什么是工厂模式,工厂模式都有哪几种,什么情况下用

  java的反射机制是什么

  什么是动态代理

  http的7层实现(或者叫3次握手是什么)

  防止sql注入用哪几种方式

  高并发如何处理

  什么是同步锁

  什么是乐观锁

  什么是悲观锁

  sql如何优化;sql的执行方式是什么样的;如何知道sql是怎么执行的?

  spring的配置文件

  数据交互的加密方式

  内存分配

  1.说出数据连接池的工作机制是什么?

  J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序

  需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

  实现方式,返回的Connection是原始Connection的代理,代理Connection的close方法不是真正关连接,而是把它代理的Connection对象还回到连接池中。

  2.接口和抽象类的区别是什么?

  Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

  接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

  类可以实现很多个接口,但是只能继承一个抽象类

  类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现

  抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

  抽象类可以在不提供接口方法实现的情况下实现接口。

  Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。

  Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,

  protected或者是public。

  接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包

  含main方法的话是可以被调用的。

  3.概括的解释下线程的几种可用状态?

  线程在执行过程中,可以处于下面几种状态:

  就绪(Runnable):线程准备运行,不一定立马就能开始执行。

  运行中(Running):进程正在执行线程的代码。

  等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。

  睡眠中(Sleeping):线程被强制睡眠。

  I/O阻塞(BlockedonI/O):等待I/O操作完成。

  同步阻塞(BlockedonSynchronization):等待获取锁。

  死亡(Dead):线程完成了执行。

  4.HashMap和Hashtable有什么区别?

  HashMap和Hashtable都实现了Map接口,因此很多特性非常相似。但是,他们

  有以下不同点:

  HashMap允许键和值是null,而Hashtable不允许键或者值是null。

  Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,

  而Hashtable适合于多线程环境。

  HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一

  方面,Hashtable提供了对键的列举(Enumeration)。

  一般认为Hashtable是一个遗留的类

  5.jsp九大内置对象?

  application page request response session exception out config

  pageContext

面试问题:

1、开发中Java用了比较多的数据结构有哪些?

2谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?

这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问你有没有线程安全的map,接下来问了conurren包。

3、对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管理,平时在tomect里面有没有进行过相关的配置

4、然后问了http协议,get和post的基本区别,接着tcp/ip协议,三次握手,窗口滑动机制。

5、开发中用了那些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。

6、然后问了我springmvc和mybatis的工作原理,有没有看过底层源码?

1、Dubbo超时重试;Dubbo超时时间设置

2、如何保障请求执行顺序

3、分布式事物与分布式锁(扣款不要出现负数)

4、分布式session设置

5、执行某操作,前50次成功,第51次失败a全部回滚b前50次提交第51次抛异常,ab场景分别如何设置Spring(传播性)

6、Zookeeper有哪些用

7、JVM内存模型

8、数据库垂直和水平拆分

9、MyBatis如何分页;如何设置缓存;MySQL分

10、熟悉IO么?与NIO的区别,阻塞与非阻塞的区别

11、分布式session一致性

12、分布式接口的幂等性设计「不能重复扣款」

1、最近做的比较熟悉的项目是哪个?画一下项目技术架构图

2、JVM老年代和新生代的比例?

3、YGC和FGC发生的具体场景

4、jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?

5、线程池的构造类的方法的5个参数的具体意义?

6、单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理)?

7、使用无界阻塞队列会出现什么问题?

8、接口如何处理重复请求?

9、具体处理方案是什么?

10、如何保证共享变量修改时的原子性?

11、设计一个对外服务的接口实现类,在1,2,3这三个主机(对应不同IP)上实现负载均衡和顺序轮询机制(考虑并发)

1、自我介绍,技术特点

2、兴趣是什么,优势是什么

3、jvm,jre以及jdk三者之间的关系?

4、Dubbo的底层原理,Zookeeper是什么

5、concurrentMap的机制;TreeMap;volidate关键字

6、快速排序;广度优先搜索(队列实现)

7、缓存的雪崩以及穿透的理解?

8、HashMap的key可以重复吗?

9、synchronized和lock的区别?

10.开发一个大型网站你会考虑哪些问题?

感谢评论区的好友支持:

1.String为什么设置为不可变类;
2.深浅拷贝的区别;
3.ThreadLocal的原理;
4.java的引用类型有哪些?他们作用是什么?都是怎么被回收的?
5.GC的算法有哪些?Hotspot是如何实现对象回收的?
6.GC是如何工作的,一个对象被回收的过程是什么?
7.Spring bean的生命周期是怎样的,依赖注入的方式有哪些;
8.怎么理解restful风格;
9.spring mvc的注解有哪些?简单介绍下;
10.类加载机制的过程和机制;
11.数据库事务的隔离级别?Spring是如何实现事务的?
12.静态代码块、代码块、构造函数区别和执行顺序;

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这