史上最全 Java 多线程面试题及答案
多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域。所以,学好多线程并发编程对Java程序员来来说极其重要的。下面小编整理了60道最常见的Java多线程面试题及答案,供你学习或者面试参考。 多线程有什么用? 线程和进程的区别是什么? ava实现线程有哪几种方式? 启动线程方法start()和run()有什么区别? 怎么终止一个线程?如何优雅地终止线程? 一个线程的生命周期有哪几种状态?它们之间如何流转的? 线程中的wait()和sleep()方法有什么区别? 多线程同步有哪几种方法? 什么是死锁?如何避免死锁? 多线程之间如何进行通信? 线程怎样拿到返回结果? violatile关键字的作用? 新建T1、T2、T3三个线程,如何保证它们按顺序执行? 怎么控制同一时间只有3个线程运行? 为什么要使用线程池? 常用的几种线程池并讲讲其中的工作原理。 线程池启动线程submit()和execute()方法有什么不同? CyclicBarrier和CountDownLatch的区别? 什么是活锁、饥饿、无锁、死锁? 什么是原子性、...
阿里巴巴高级 Java 面试题 70 道
整理的70道阿里的Java面试题,都来挑战一下,看看自己有多厉害。下面题目都带超详细的解答,详情见底部。 1、java事件机制包括哪三个部分?分别介绍。 2、为什么要使用线程池? 3、线程池有什么作用? 4、说说几种常见的线程池及使用场景。 5、线程池都有哪几种工作队列? 6、怎么理解无界队列和有界队列? 7、线程池中的几种重要的参数及流程说明。 8、什么是反射机制? 9、说说反射机制的作用。 10、反射机制会不会有性能问题? 11、你怎么理解http协议? 12、说说http协议的工作流程。 13、http有哪些请求提交方式? 14、http中的200,302,403,404,500,503都代表什么状态? 15、http get和post有什么区别? 16、你怎么理解cookie和session,有哪些不同点? 17、什么是web缓存?有什么优点? 18、什么是https,说说https的工作原理? 19、什么是http代理服务器,有什么用? 20、什么是虚拟主机及实现原理? 21、什么是Java虚拟机,为什么要使用? 22、说说Java虚拟机的生命周期及体系结构。 23、说...
面试一个 3 年 Java 程序员,一个问题都不会!
大家周末愉快,当你看到这篇文章的时候,事情已经过去几天了。 刚从洽谈室走出来,心情很复杂! 栈长面试过很多人,不乏知识渊博、技能顶尖的选手,但从未遇到过工作了三年,却一个问题都答不上来。。 这场史无前例的面试,我和面试者的脸上都写满了尴尬,最后戏剧性收场。 面试者工作了三年,简历上写满了各种前沿的技术,如:Spring Boot、Spring Cloud、Dubbo、RabbitMQ…… 自我介绍没什么亮点,能想起来的就是他说的前后端分离了,下面便进入了尴尬模式。。 栈长:你刚说到你们做了前后端分离,你能说下前后端分离有哪些规范吗? 他:规范?没有什么规范啊。 栈长:怎么可能没规范呢? 他:(他想半天)……就是后端返回 JSON 数据,前端人员根据一个文档来开发。 栈长:就这么简单么,还有别的么? 他:没有别的吧! 栈长:那后端接口设计没任何规范吗?别人拿到 URL 不是可以随意调用么? 他:有 MD5 加密什么的吧…… 我接着问怎么处理加密逻辑的,又说不出所以然了,显然我对前后端分离相关回答是非常不满意的,我接着对这个话题继续展开了连环炮,考验下他的技术攻底到底怎么样。 栈长:...
为什么面试你要25K,HR只给你20K?
周末了,我们来聊个轻松的话题,关于涨薪,哈哈~ 前阵子,栈长给大家分享了《为什么公司宁愿 25K 重新招人,也不给你加到 20K?》,今天我们来聊一个差不多的话题: 为什么面试你要25K,HR只给你20K? 今天的这个标题只是个例子,至少栈长我曾经是遇到过这种情况,我曾经面试要 25K,对方公司确只能给我 23K,有的只给 20K,最后妥协或者不了了之。。 为什么面试时,你提出的薪资要求,公司总要砍你价,总是不能达到你的预期?所以,我觉得有必要了解这些道道,知己知彼,才能百战百胜。 1、成本 就像我们出去买东西一样,能还价的我们都会习惯性的去还价,谁都想将自己的成本控制到最低,谁都不是傻子。 更何况是资本家,HR(人力资源)角色就是要帮企业控制人力成本,用最少的钱招到最合适的人。 所以被压价是正常现象,如果 HR 不压价,反而有问题,就要反思是不是自己薪资要的太低了。 2、制度 每个公司都有每个公司的薪酬制度,不同的岗位都有其对应的薪资范围。 第一,如果你应聘的岗位,你要的价钱超过了应聘公司的薪资范围,公司也很难满足你的期望; 第二,如果你岗位上不去,薪资也很难上得去。比如一个普...
通往大神之路,百度 Java 面试题前 200 页。
基本概念 操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块 什么是 Java 的反射机制 什么是 ACID BS与CS的联系与区别 Cookie 和 Session的区别 fail-fast 与 fail-safe 机制有什么区别 get 和 post请求的区别 Interface 与 abstract 类的区别 IOC的优点是什么 IO 和 NIO的区别,NIO优点 Java 8 / Java 7 为我们提供了什么新功能 什么是竞态条件? 举个例子说明。 JRE、JDK、JVM 及 JIT 之间有什么不同 MVC的各个部分都有那些技术来实现?如何实现? RPC 通信和 RMI 区别 什么是 Web Service(Web服务) JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 WEB容器主要有哪些功能? 并请列出一些常见的WEB容器名字。 一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制 简单说说你了解的类加载器。是否实现过类加载器 解释一...
10 个 Eclipse 珍藏插件推荐
1、Open Explorer打开资源管理器插件,这是一个从Eclipse里面可以直接定位打开windows资源管理器文件的插件,这个版本的插件在最新的Eclipse版本中都能使用。 下载地址:https://github.com/samsonw/OpenExplorer/downloads 2、JadClipse反编译插件,能反编译Jar包中的class文件。 下载地址:https://sourceforge.net/projects/jadclipse/ 3、SubclipseEclipse集成SVN插件,在Eclipse商店中可以直接搜索Subclipse安装。 4、EGITEclipse集成GIT插件,在Eclipse商店中可以直接搜索GIT安装。 5、JettyJetty容器插件,可以直接运行web项目,可以用来代替Tomcat,直接在商店安装即可。 6、Spring ToolsSpring的插件,可以很方便的管理和运行Spring项目,在商店可以直接安装。 7、FindBugs这个插件能找出Eclipse工程中的代码缺陷,很好用。 在线安装地址:http:/...
Git SSH 连接方式配置
如果使用ssh的方式管理,需要配置ssh key. 1、打开git bash命令窗口2、生成ssh keyssh-keygen -t rsa -b 4096 -C "your_email@example.com" your_email@example.com为github上你注册的email地址。 如下面完整创建过程: $ ssh-keygen -t rsa -b 4096 -C "test@qq.com" Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Us...
Eclipse 最常用的 10 组快捷键
虽然栈长我现在不怎么用 Eclipse 了,但 Eclipse 的快捷键还是忘不了的,可以说 Eclipse 的快捷键很方便,恰到好处。 今天,我大概整理了 10 组 Eclipse 我觉得比较常用的牛逼快捷键,希望对你有帮助。如果你是 IDEA 粉,请略过,或者期待下篇文章分解,我们再讲 IDEA 的快捷键。 1、打开资源 CTRL + SHIFT + R:打开所有类型文件,不包括 JAR 包; CTRL + SHIFT + T:打开 Java 类型文件,包括 JAR 包; 2、查找资源 CTRL + F:查找当前编辑器内容; CTRL + H:查找所有文件内容; CTRL + SHIFT + G:快速查找所有引用的地方; 3、代码整理 CTRL + SHIFT + F:格式化代码; CTRL + SHIFT + O:去除没有用到的引用; CTRL + SHIFT + M:导入需要的类引用; 4、重命名 ALT + SHIFT + R:重命名; CTRL + SHIFT + X:转换大写; CTRL + SHIFT + Y:转换小写; 5、切换编辑器 CTRL + E:显示所有...
Git 提交记住用户名和密码
每次提交代码都要输入用户名密码,十分麻烦,教大家怎么让Git记住密码。 Https记住密码永久记住密码git config --global credential.helper store 会在用户主目录的.gitconfig文件中生成下面的配置。 [credential] helper = store 如果没有--global,则在当前项目下的.git/config文件中添加。 当然,你也可以直接复制上面生成的配置到配置文件中。 临时记住密码默认记住15分钟: git config –global credential.helper cache 下面是自定义配置记住1小时: git config credential.helper ‘cache –timeout=3600’ SSH记住密码可以从一个已有的SSH KEY来记住密码,会在用户主目录下的known_hosts生成配置。 把ssh key添加到ssh-agent$ eval $(ssh-agent -s) $ ssh-add ~/.ssh/id_rsa 如添加过程: ...
Git 仓库操作命令
创建仓库git init 在当前目录执行,会生成.git目录文件,这个和SVN一致。 提交到仓库git commit -m "first commit" -m:表示提交描述,必须要填。 添加到远端仓库git remote add origin git@github.com:test/test.git 推送到远端仓库git push -u origin master 克隆仓库直接从远端把代码克隆下来。 git clone git@github.com:test/test.git 仓库状态git status $ git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) README.md nothing added to commit but untracked files prese...
