编程面试题

  • 空的synced(this){}是否对线程之间的内存可见性有任何意义?

    在a之前发生的所有写操作对a monitor exit之后的所有线程可见monitor enter。 一个synchronizedthis{}可以变成像字节码 monitorenter monitorexit 因此,如果在写入之前有大量写入操作,则synchroni

  • 嵌套类中私有构造函数的范围

    如果成员或构造函数被声明为私有,则仅当访问发生在包含成员或构造函数的声明的顶级类(第7.6节)的主体内时,才允许访问。 a href="http:docs.oracle.comjavasespecsjlsse7htmljls-6.html#jls

  • Java中printf的双精度格式问题

    %d是供整数使用的%f,它同时适用于float和double类型: double d = 1.2; float f = 1.2f; System.out.printf"%f %f",d,f; prints 1.200000 1.200000

  • Java / Groovy中的Base64编码

    Apache Commons有许多实用程序: 二进制包:http : a href="http:commons.apache.orgcodecapidocsorgapachecommonscodecb

  • UnsatisfiedLinkError:/tmp/snappy-1.1.4-libsnappyjava.so加载共享库ld- linux-x86-64.so.2时出错:没有这样的文件或目录

    错误消息指出* libsnappyjava.so无法找到ld- linux-x86-64.so.2。这是一个glibc动态加载程序,而Alpine映像无法与glibc一起运行。您可以尝试通过在Dockerfile中安装libc6-compat软件包来使其运行,例如: RUN apk update apk add --no-cache libc6-compat

  • Java 8使用者/函数Lambda歧义

    这行绝对是模棱两可的: doStuffgetPatternx - String.valueOfx; 从链接的JLS章节重新阅读: 如果满足以下所有条件,则lambda表达式(第15.27节)可能与功能接口类型(第9.8节)兼容: 目标类型的函数类型的奇偶性与l

  • 在Java中不使用'new'关键字声明数组

    一个明显的区别是,一个全为零,另一个包含[1..5]。 但这是唯一的区别。两者都是5元素整数数组,都以相同的方式分配。用大括号声明不只是语法上的方便new。 请注意,只有在声明数组时才能使用此形式: int[] blah = {} 但不是 int[] blah; blah = {}

  • Java ForkJoinPool具有非递归任务,窃取工作有效吗?

    ForkJoinPool源代码有一个不错的部分,称为“实施概述”,请阅读以获取最终真相。以下说明是我对JDK 8u40的理解。 从第一天开始,ForkJoinPool每个工作线程都有一个工作队列(我们称它们为“工作队列”)。分叉的任务被推入本地工作线程队列,准备再次由工作线程弹出并执行- 换句话说,从工作线程角度看,它看起来像是一个堆栈。当工作人员耗尽其工作人员队列时,

  • 无法从密钥库获取密钥

    这基本上意味着两件事, 您的密码错误。 您的密钥库已损坏。 我怀疑是第一名。仔细检查您的密码。尝试是否可以使用相同的密码在keytool中列出密钥。

  • JpaRepository缓存新创建的对象。如何刷新呢?

    如果您使用的是Hibernate,则这是预期的结果。当你打电话translationRepository.saveAndFlushtranslation,并translationRepository.findOnet.getId一前一后,他们打它保持的所有对象,它已经在工作的高速缓存中的同一个Hibernate Session。因此,第二个调用只是返回传递给第一个对象的对象。

  • 抽象类:-实时示例

    从这里可以找到一个实时的好例子: 抽象类的一个具体示例是名为Animal的类。您会在现实生活中看到许多动物,但只有几种动物。也就是说,您永远不会看着紫色和毛茸茸的东西,而说“那是一种

  • 如何捕获System.exit事件?

    该Runtime.addShutdownHook方法可用于添加一个关闭钩子,该钩子基本上是未启动的Thread,该钩子在Java虚拟机关闭时执行。 但是,

  • 在什么情况下,空的同步块可以实现正确的线程语义?

    空的同步块将等待,直到没有其他人正在使用该同步器。那可能就是您想要的,但是因为您没有保护同步块中的后续代码,所以没有什么可以阻止其他人修改在运行后续代码时正在等待的内容。那几乎不是您想要的。

  • 是否有实用程序将美国州名转换为州代码。例如。亚利桑那到亚利桑那?

    我已经准备好了-您可以使用它: MapString, String states = new HashMapString, String; states.put"Alabama","AL"; states.put"Alaska","AK"; states.put"Alberta","AB"; states.put"American Samoa","AS"; st

  • 如何通过命令行查看Java类文件的注释?

    如果我错了,请纠正我,但我认为,编译器会从类中删除注释,除非您对注释本身使用Annotation @Retention(RetentionPolicy.RUNTIME),否则信息将不会保留在类文件中。如果注释保留在类文件中,则可以使用javap(jdk的一部分)来查看这些注释: javap my.package.MyClass 更新:这似乎需要JDK7,JDK

  • WAR文件的Java 9模块化也是吗?

    当前,Java EE和Java 9(jigsaw)模块之间没有链接。未来的Java EE版本可能会引入规范定义的行为,说明如何与拼图模块交互。 此时,所有应用服务器在JDK9上运行时均以“类路径模式”运行,这实际上意味着它们不使用拼图。 在大多数情况下,将模块信息引入战争部署只会导致部署问题,因为JDK可能会尝试以不同于应用服务器其他部分的方式加载它。或者甚至没有什么不同,因为大多数应用服务器都具有用于加载ja

  • 在Mac 10.8上的Eclipse-已安装1.7.0 JRE / JDK,但是Eclipse无法启动

    我在Ask Different上找到了答案 这是一个丑陋的hack,但效果很好。

  • 如何使用Jersey客户端POST方法提交数据

    现在我知道了。这是我的解决方案: public static void mainString[] args { try { Client client = Client.create; WebResource webResource = client.resourcebaseuri; String input = "{\"switch\":

  • Java JDK 1.7中的Apple Retina显示屏支持AWT / Swing

    Java 7u40 Early Access现在支持HiDPI(Retina)显示,如此changelog所示。因此,视网膜支持现在可用于: Java 6

  • 少用CSS的Java编译器?

    LESS Engine将JavaScript编译器包装在简单的Java接口中。 我没有使用lesscss-java,因此无法评论相对质量,但是在我需要执行的小任务中,我对Less Engine毫无怨言。

  • 父Pom和微服务

    多模块父pom的“问题”是,没有复杂的配置文件,它将模块锁定在相同的发布周期中(假设您使用的是Release Plugin)。 我使用Maven的方式是让一个父pom声明: 常见的依赖关系(日志API,JUnit等)。

  • 在Jetty 9中更改线程池大小

    从文档: 服务器实例提供了一个ThreadPool实例,该实例是其他Jetty服务器组件使用的默认执行器服务。线程池的主要配置是最大和最小大小,并在etc jetty.xml中设置。

  • 获取Java应用程序服务器名称和版本

    我找到一些代码来获取有关将应用程序部署到何处的服务器信息。 这段代码是用Servlet编写的,以获取运行它的服务器信息。 String str1 = getServletContext.getServerInfo; 这样,您将获得服务器名称和服务器的版本信息。 我认为这会对您有所帮助。

  • 如何使用嵌入式码头添加servlet过滤器

    更新:对于Jetty版本9.2.2: Server server = new Server; Note: if you don't want control over type of connector, etc. you can simply call new Serverport; ServerConnector connector =

  • Log4J:如何将OutputStream或Writer重定向到记录器的writer?

    我的建议是,为什么不编写OutputStream呢?我正准备为您编写一个,但是我在网上找到了这个很好的例子,请检查一下! a href="https:web.archive.orgweb20130527080241http:www.java2s.comOpen- SourceJavaTestingjacaretojacaretotoolkitlog4jLogOutputStream.java.ht

  • 关于不可变列表(由Arrays.asList()创建)

    当我们使用java.util.Arrays.asList()从数组创建列表时,该列表是可变的。 是和否:可以通过调用来修改列表 list.setindex, element; 但列表可能 不会 进行 结构 修饰。这意味着不可能将元素

  • 具有Null键和Null值的HashMap

    HashMap 当将 null 作为键传递并且null作为特殊情况处理时,不会调用哈希码。 放置方法 HashMap 将 null 键放在存储区 0中, 并将 em

  • IntelliJ IDEA + Maven在iml文件中对依赖项的需求是什么?

    导入Maven项目时,IDEA以其可以在内部理解和使用的格式表示其依赖关系模型。如果通过Maven管理依赖关系,则无需在IntelliJ IDEA模块设置中更改依赖关系。 这也可以用来试验依赖项而无需更改pom.xml。请注意,您所做的所有修改将在下一次Maven导入时恢复。 换句话说,IDEA不能直接理解Maven模型,而是将其转换为所有子系统使用的自己的项目模型,并

  • 混合log4j 1.x和log4j 2

    您是否知道log4j2包括一个用于log4j-1.2的桥?您可以通过删除旧的log4j-1.2.17.jar并包括以下三个jar来使用它: log4j-api-2.x.jar log4j-core-2.x.jar log4j-1.2-api-2.x.jar 这将导致您的应用程序对log4-1.2 API的所有调用都被路由

  • 无效使用参数匹配器

    Mockito要求您在存入方法调用时仅使用原始值或仅使用匹配器。完整的例外情况(您未在此处发布)肯定可以解释所有情况。 简单更改行: whenjdbcTemplate.queryForObjectanyString, anySqlParameterSource.class, String.class .thenReturn"Tes

  • 如何忽略Java中的异常

    我会严重怀疑任何忽略测试代码引发的异常的测试代码的合理性。也就是说,假设您知道自己在做什么……就无法从根本上忽略引发的异常。您能做的最好的事情就是最小化包装异常抛出代码所需的样板。 如果您使用的是Java 8,则可以使用以下代码: public static void ignoringExcRunnableExc r { try { r.run; } catch Exception

  • Double在Java中到底是什么意思?

    Double是包装器类, Double类将原始类型double的值包装在对象中。类型为Double的对象包含单个类型为double的字段。 此外,此类提供了几种将double转换为String和将String转换为double

  • Maven:主线程中的NoClassDefFoundError

    从Eclipse运行时,Eclipse会为您配置类路径。因此,您不会遇到此问题。 在Eclipse之外运行时,您需要通过提供这些jar文件的路径(即file:devlibsmina- core-2.0.3.jar在中)MANIFEST.MF或通过-cp在执行应用程序时添加选项来设置CLASSPATH 。不要忘记清单文件中类路径中的条目是相

  • Spring @Autowired是按名称还是按类型注入bean?

    该文档解释了这个 对于后备匹配, bean名称被视为默认的限定符值。 因此,您可以使用id

  • Apache PoolingHttpClientConnectionManager引发非法状态异常

    此行为是由于HC 4.3中的错误所致。它已在HC 4.4a1中修复。从4.4版本开始,CloseableHttpClient#close仅在客户端独占时才应自动关闭连接池

  • 与创建单独的线程相比,java中的ThreadGroup有什么好处?

    ThreadGroup在具有数千个线程的大型应用服务器中,使用可能是一种有用的诊断技术。如果您的线程在逻辑上分组在一起,那么当您获得堆栈跟踪时,您可以看到违规线程属于哪个组(例如,“ Tomcat线程”,“ MDB线程”,“线程池X”等),可以是对跟踪和解决问题有很大帮助。

  • Java日历获取当前日期,不包括小时,分钟,秒和毫秒,以毫秒为单位

    Calendar cal = Calendar.getInstance; cal.setCalendar.HOUR_OF_DAY, 0; cal.setCalendar.MINUTE, 0; cal.setCalendar.SECOND, 0; cal.setCalendar.MILLISECOND, 0; currentDate = cal.getTimeInMillis;

  • Java注释-寻找RetentionPolicy.CLASS的示例

    在当前项目中,我拥有大量的库。我可以找到的唯一示例是在Google Guava库中com.g

  • 使用.getDeclaredMethod从类中扩展另一个方法

    听起来您只需要使用getMethod而不是即可getDeclaredMethod。整个要点getDeclaredMet

  • 如何使IntelliJ提示我输入命令行参数

    从2018.3和2019.1版本开始,IntelliJ现在在运行配置中支持宏。您可以$Prompt$在“ VM选项”,“程序参数”等字段中的任何位置使用它,其行为就像${string_prompt}在Eclipse中一样-运行配置时,它将提示您输入参数。