面试题
ustcyy91
这个作者很懒,什么都没留下…
展开
-
Java面试题:Servlet是线程安全的吗?
Servlet不是线程安全的。要解释为什么Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的。当Tomcat接收到Client的HTTP请求时,Tomcat从线程池中取出一个线程,之后找到该请求对应的Servlet对象并进行初始化,之后调用service()方法。要注意的是每一个Servlet对象再Tomcat容器中只有一个实例转载 2017-10-30 20:44:41 · 199 阅读 · 0 评论 -
字符串--------循环左移
已知字符数组 abcdef循环左移2位 输出cdefab方法:三次反转public class Solution { public static void main(String[] args) { char[] s=new char[]{'a','b','c','d','e','f'}; leftReverse(s, 6, 2); System.ou原创 2018-04-26 20:22:46 · 582 阅读 · 0 评论 -
动态规划————最长公共子序列长度
public class Solution { public static void main(String[] args) { String str1="ABCBDAB"; String str2="BDCABA"; System.out.println(longestCommonSubsequence(str1, str2)); } public static int lon...原创 2018-04-26 21:58:16 · 241 阅读 · 1 评论 -
字符串----交换星号
class Solution { public static void main(String[] args) { Solution test=new Solution(); System.out.println(test.fun("*01*2234*4")); } public String fun(String s) { char[] ch=s.toCharArray();...原创 2018-04-27 15:30:03 · 247 阅读 · 0 评论 -
字符串----反转单词不反转单词内容
反转句中的单词 单词内容不变比如 输入WuHan is Dog 输出 Dog is WuHan和字符串循环左移类似 两次反转 先整体反转 再用split函数 分割 再依次反转合并class Solution { public static void main(String[] args) { Solution test=new Solution(); Syst原创 2018-04-27 16:29:30 · 1249 阅读 · 0 评论 -
字符串-----最长不重复子字符串(leetcode3)
import java.util.HashMap;public class Solution { public int lengthOfLongestSubstring(String s) { //记录最大长度 int max=0; //left存放左边界 int left=0; HashMap<Character, Integer> map=new HashM...原创 2018-04-27 20:55:16 · 229 阅读 · 0 评论 -
字符串-------最长回文串(leetcode5)
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: "babad"Output: "bab"Note: "aba" is also a valid answer.Example 2:...原创 2018-04-27 21:48:35 · 231 阅读 · 0 评论 -
LCS最长公共子序列与最长公共子串
import java.util.ArrayList; import java.util.List; public class Solution { public static void main(String[] args) { System.out.println(longestSub("abcde","aebacec")); ...原创 2018-06-19 15:22:05 · 194 阅读 · 0 评论 -
今日头条2018.8.12笔试题总结
今日头条笔试题1(经典的floodfill问题):具体可以参考leetcode 200题:Number of Islands1. 一个球场C的球迷看台可容纳M*N个球迷。官方想统计一共有多少球迷群体,最大的球迷群体有多少人。球迷选座特性:1.1.同球迷群体会选择相邻座位,不同球迷群体选择不相邻的座位。(相邻包括前后相邻、左右相邻、斜对角相邻);2.给定一个M*N的二位球场,0...原创 2018-08-14 10:34:32 · 8181 阅读 · 0 评论 -
Leetcode----------区间合并(数组)
最近在做今日头条的笔试题碰到了区间合并问题所以趁机把类似的问题总结一下LeetCode 56 给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1...原创 2018-08-14 16:21:00 · 6030 阅读 · 0 评论 -
ThreadLocal的总结
作者:大闲人柴毛毛链接:https://zhuanlan.zhihu.com/p/34494674来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ThreadLocal作用在并发编程中时常有这样一种需求:每条线程都需要存取一个同名变量,但每条线程中该变量的值均不相同。如果是你,该如何实现上述功能?常规的思路如下:使用一个线程共享的Map<...转载 2018-08-27 17:28:50 · 298 阅读 · 0 评论 -
JAVA--线程面试TOP50题
原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚...转载 2018-08-27 17:38:50 · 207 阅读 · 0 评论 -
Java 里如何实现线程间通信
Java 里如何实现线程间通信 原文出处: wingjayhttp://www.importnew.com/26850.html正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), ...转载 2018-08-28 15:25:09 · 220 阅读 · 0 评论 -
原码, 反码, 补码 详解
原码, 反码, 补码 详解本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.转载 2018-03-06 21:42:01 · 470 阅读 · 0 评论 -
i++是原子操作吗?怎么保证其原子性
i++是原子操作吗?怎么保证其原子性i++不是原子操作,因为有多个步骤,为了保证其原子性,可以使用AtomicInteger类的getAndIncrement()方法实现i++我们先来看一下getAndIncrement的源代码: * public final int getAndIncrement() { * f原创 2017-12-15 17:07:35 · 4258 阅读 · 0 评论 -
hashcode和equals为什么都要重写?
1、"==",即全等比较,它判断的是地址是否相等,如果地址相同的话,也就不用比较eqauls了。2、原始的"equals"是和“==”的完全等同,即Object的equals和“=="完全等同。3、java se规范约定,如果重写equals方法,那也要重写hashCode方法,使equals为真的情况,hashCode的值也是相同的,此为约定而非强制。4.对于非hash类型的数据结构,不原创 2017-12-14 22:29:07 · 233 阅读 · 0 评论 -
Java中 volatile关键字怎么禁止重排序
使用volatile关键字修饰共享变量可以禁止重排序。若用volatile修饰共享变量,在编译时,会在指令序列中插入内存屏障来禁止特定类型的处理器重排序 volatile禁止指令重排序的一些规则: 1.当第二个操作是voaltile写时,无论第一个操作是什么,都不能进行重排序 2.当地一个操作是volatile读时,不管第二个操作是什么,都不能进行重排序 3.当第一个操作是原创 2017-12-11 11:19:33 · 3730 阅读 · 1 评论 -
int 和Integer的区别 以及应用场景
1.int是基本数据类型 Integer是封装类2.int的初始值是0,Integer是null应用场景的区别:比如要体现出 考试成绩为0和缺考的区别的时候 用Integer可以 int不行比如用容器的时候 ,ArrayList等职能放对象,不能放基本数据类型。原创 2017-12-11 11:25:20 · 5134 阅读 · 4 评论 -
jdk1.6以后 对synchronized锁做了哪些优化
1.适应自旋锁 自旋锁:为了减少线程状态改变带来的消耗 不停地执行当前线程 2.锁消除: 不可能存在共享数据竞争的锁进行消除3.锁粗化: 将连续的加锁 精简到只加一次锁4.轻量级锁: 无竞争条件下 通过CAS消除同步互斥5.偏向锁:无竞争条件下 消除整个同步互斥,连CAS都不操作。原创 2017-12-19 21:33:25 · 4892 阅读 · 0 评论 -
漫画:高并发下的HashMap引起的链表死循环原因分析
请见链接:https://mp.weixin.qq.com/s?__biz=MzI1MTIzMzI2MA==&mid=2650561742&idx=1&sn=c99d642c89daa66b157a15c3529092a7&chksm=f1feea4dc689635b31a7ecf859a4fb1834bd4ef1868333bcd352113da127da830442ce31e49c&mps转载 2017-12-11 15:30:36 · 1161 阅读 · 0 评论 -
TCP 出现分包粘包的原因 以及解决办法
转载:粘包产生原因:先说TCP:由于TCP协议本身的机制(面向连接的可靠地协议-三次握手机制)客户端与服务器会维持一个连接(Channel),数据在连接不断开的情况下,可以持续不断地将多个数据包发往服务器,但是如果发送的网络数据包太小,那么他本身会启用Nagle算法(可配置是否启用)对较小的数据包进行合并(基于此,TCP的网络延迟要UDP的高些)然后再发送(超时或者包大小足够)。那转载 2017-12-11 15:55:08 · 8609 阅读 · 2 评论 -
一个网页从输入网址到显示页面的全过程
原创 2017-12-12 16:24:10 · 805 阅读 · 0 评论 -
java——乐观锁和悲观锁
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人转载 2017-12-14 10:24:29 · 416 阅读 · 0 评论 -
java——保证原子性操作的CAS算法
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomics转载 2017-12-14 10:34:47 · 2099 阅读 · 0 评论 -
java——Executor框架
原创 2017-12-14 15:14:59 · 200 阅读 · 0 评论 -
java——线程生命周期waiting状态和blocked状态的区别
waiting:主动为之,wait()方法释放cpu执行权和释放锁 进入等待队列 需要notify()唤醒进入同步队列竞争锁blocked:被动的,在竞争锁的时候失败,被阻塞,在同步队列里继续竞争锁。原创 2017-12-14 17:41:31 · 1555 阅读 · 0 评论 -
jdk1.8对HashMap的优化
在JDK1.8版本中,对数据结构做了进一步的优化,引入了红黑树。而当链表长度太长(默认超过8)时,链表就转换为红黑树,利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法原创 2017-12-14 20:46:20 · 834 阅读 · 0 评论 -
TCP如何保证可靠传输
原创 2017-12-14 21:16:08 · 269 阅读 · 0 评论 -
线程池拒绝策略RejectedExecutionHandler
JAVA为多线程场景提供了线程池,下面是一个线程池的构造方法: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQue...转载 2018-08-28 17:22:24 · 520 阅读 · 0 评论