随笔分类 -  手撕代码

摘要:某次面试阿里云,要求实时写一个小程序,要求如下:1.两个线程,一个线程生产者,一个线程是消费者2.生产者生产票,超过10张就休息,被消费了就继续生产。3.消费者消费票,票没了之后就休息,有票了接着消费。题目看着很简单,但却包含了很多考点:消息队列、线程、线程通信、锁。具体看看我写的源码,这是后期几经 阅读全文
posted @ 2021-08-11 18:19 gaopengpy
摘要:在数据库中创建两张表 CREATE TABLE `t_user_0` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE= 阅读全文
posted @ 2021-06-08 18:43 gaopengpy
摘要:笔试题: 登陆安全的题目,如果你的系统登陆接口在被刷。我们要建立一个防刷系统。 根据登陆ip,30分钟之内,只能请求30次登陆请求,如果超过这个限制,则整个ip限制登陆请求30分钟 设计数据结构和实现代码模拟分布式限流,多线程问题。不允许使用redis等。 设计思路: 这道题主要是设计两个Map, 阅读全文
posted @ 2020-10-29 15:47 gaopengpy
摘要:笔试题: 两个线程交替打印1-100的整数 题目说明:两个线程交替打印1-100的整数,一个打印奇数,一个打印偶数,要求输出结果有序。 。public class Test { private static volatile Integer counter = 1; private static v 阅读全文
posted @ 2020-10-29 12:16 gaopengpy
摘要:写一个固定容量的同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用 第一种写法: /** * 面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, * 能够支持2个生产者线程以及10个消费者线程的阻塞调用 * 阅读全文
posted @ 2020-09-03 11:12 gaopengpy
摘要:笔试题:实现一个容器,提供两个方法:add,size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5时,线程2给出提示并结束 import java.util.ArrayList; import java.util.List; public class Containe 阅读全文
posted @ 2020-09-02 17:59 gaopengpy
摘要:笔试题:实现一个容器,提供两个方法:add,size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5时,线程2给出提示并结束 import java.util.ArrayList; import java.util.List; public class Containe 阅读全文
posted @ 2020-09-02 17:41 gaopengpy
摘要:笔试题:实现一个容器,提供两个方法:add,size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5时,线程2给出提示并结束 import java.util.ArrayList; import java.util.List; public class Containe 阅读全文
posted @ 2020-09-02 15:49 gaopengpy
摘要:笔试题目:1) 实现一个KV型的LRU(最近最少使用)Cache,支持get和put方法;要求实现时间复杂度,O(1); 2) 如果要求get,put方法线程安全,又该如何支持?请用代码实现,并说明如此实现的性能优缺点,语言不限;/*public class LRUCache { public St 阅读全文
posted @ 2020-08-21 10:44 gaopengpy
摘要:求中奖区域数及最大区域人数 阿里年会抽奖,将一个会场,分成X行Y列,若某一个同学中奖则用 1 表示,未中奖则用 0 表示,任给一个这样的座位布局,(中奖区域划分规则:如果两个座位之间能够在不穿越其他座位的情况下连成直线,则1 1属于同一中奖区域,比如下图 1 是可以连起来的一个中奖区域,中奖人数是4 阅读全文
posted @ 2020-07-13 11:14 gaopengpy
摘要:JAVA笔试题:标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号 代码如下: public class Test { public static void main(String[] args) { System.out.println(lastPerson(13)); } 阅读全文
posted @ 2020-05-29 23:28 gaopengpy
摘要:基于阻塞队列实现的简单生产者消费者模式,代码如下: public class BlockingQueue_Test { private static final int MAX_CAPACITY = 10; private static ArrayBlockingQueue<Object> good 阅读全文
posted @ 2020-05-24 21:50 gaopengpy
摘要:通过JDK自带工具实现一个间隔并发执行的定时任务,代码如下: public class Test{ public static void main(String[] args) { ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = n 阅读全文
posted @ 2020-05-24 20:18 gaopengpy
摘要:编写代码,使用3个线程,1个线程打印X,一个线程打印Y,一个线程打印Z,同时执行连续打印10次"XYZ"。 本题解题采用volatile实现,主要考察的点是volatile内存可见性问题。 public class Test { private static volatile Integer Cou 阅读全文
posted @ 2020-05-18 22:42 gaopengpy
摘要:走阶梯,有n级阶梯,一次可以走一级、两级或者三级,请编写一个函数计算走完该阶梯一共有多少种种方法? 该题主要是考察递归算法思想。 int f(int n) { if (n == 1) { return 1; } if (n == 2) { return 2; } //当阶梯数为3是4种走法,要特别注 阅读全文
posted @ 2020-05-15 21:05 gaopengpy
摘要:使用CountDownLatch模拟线程并发执行代码,示例代码如下: package com.gaopeng.multithread; import java.util.concurrent.CountDownLatch; /** * 使用CountDownLatch模拟线程并发执行代码 * * @ 阅读全文
posted @ 2020-04-20 12:27 gaopengpy
摘要:使用CyclicBarrier模拟线程并发执行代码 package com.gaopeng.multithread; import java.util.concurrent.CountDownLatch; import java.util.concurrent.CyclicBarrier; impo 阅读全文
posted @ 2020-04-16 14:21 gaopengpy
摘要:经典笔试题: 1、自定义容器,提供新增元素(add)和获取元素数量(size)方法。2、启动两个线程。线程1向容器中新增10个数据。线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止。 package com.gaopeng.programming.test2; import jav 阅读全文
posted @ 2020-02-05 17:26 gaopengpy
摘要:经典笔试题: 1、自定义容器,提供新增元素(add)和获取元素数量(size)方法。2、启动两个线程。线程1向容器中新增10个数据。线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止。 package com.gaopeng.programming.test2; import jav 阅读全文
posted @ 2020-02-05 11:22 gaopengpy
摘要:经典笔试题: 1、自定义容器,提供新增元素(add)和获取元素数量(size)方法。2、启动两个线程。线程1向容器中新增10个数据。线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止。 package com.gaopeng.programming.test2; import jav 阅读全文
posted @ 2020-02-05 11:19 gaopengpy