常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)

比较典型的题目,如下有
题目一:

1、启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20….以此类推, 直到打印到75。

题目二:

1、使用5个线程

2、五个线程依次打印1A2B…,即第一个线程负责打印1(A、F)等等。

类似这种题目,其实面试官就是想要考验一下你的多线程编程的能力,会在百度、阿里、腾讯、快手、字节这种一线大厂中会经常被问到,就好比想要你写一个生产消费者模型,其实差不多就是想要考验你的多线程编程以及锁的使用的基础,如果写的不是很多,很有可能就会被自己的写的代码给弄蒙的,我之前面试百度的时候给搞蒙了,说到底还是基础不牢,因为平时不太会注重这个地方,所以面试一旦叫你写就会蒙的。

经过这样的一个教训,特意去找了这一系列的面试题目,总结了一个模板,我觉得遇到这样按顺序打印,套用该模板就行,如下:

package PrintLetterInorder;public class PrintNumsInorder {public static int count = 0;public static class MyPrint extends Thread{int index;public MyPrint(int index){this.index = index;}public void run(){synchronized (""){//这里是顺序打印数字的//这是题目中的一个终止条件while(count < 75){try{if (count % 3 == (index - 1)){System.out.println((index - 1)+ "线程打印值为:" + (count + 1));count++;"".notifyAll();}"".wait();}catch(InterruptedException e){e.printStackTrace();}}}}/*这里是顺序打印字母的,对比发现这两个题目的代码只有run()方法中的截止条件有不一样,其他的基本上都一样的,这样就方便在面试过程中去写,不容易乱了。public void run(){synchronized (""){while(count < 26){try{//满足打印条件后,打印并将count + 1,然后唤醒其他线程,不满足条件则挂起if(count % 5 == (index - 1)){char c = (char)('A' + count);System.out.println(index + ""+c);count++;"".notifyAll();}//不满足条件,则挂起"".wait();}catch (InterruptedException e){e.printStackTrace();}}}}*/}//利用该主函数直接创建,这个地方题目中要你创建几个,你就创建几个 public static void main(String[] args) {Thread thread1 = new MyPrint(1);Thread thread2 = new MyPrint(2);Thread thread3 = new MyPrint(3);thread1.start();thread2.start();thread3.start();}}

输出的结果:

结果1:

结果2:

常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)相关推荐

  1. 力扣高频算法php_互联网公司最常见的面试算法题有哪些?

    很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么?你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 你在面试的时候,卡壳了,一时间忘了怎么 ...

  2. Java常见的面试算法题:实现两个线程交替打印1到100的数

    Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...

  3. 互联网公司最常见的面试算法题大集合!

      转载于 新智元   来源:Github 编辑:元子 [导读]LeetCode是一个美国的在线编程网站,收集了各个大厂的笔试面试题,对找工作的毕业生和开发者来说,非常有价值.很多求职者都会在Leet ...

  4. 【常见笔试面试算法题12】动态规划算法案例分析

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 文章目录 1.暴力搜索方法 2.记忆搜索方法 3.动态规划方法 4. ...

  5. 【常见笔试面试算法题12续集六】动态规划算法案例分析6 最优编辑练习题

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 对于两个字符串A和B,我们需要进行插入.删除和修改操作将A串变为B串 ...

  6. 【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度)

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 给定两个字符串A和B,返回两个字符串的最长公共子序列的长度.例如,A ...

  7. 【常见笔试面试算法题12续集二】动态规划算法案例2矩阵最小路径和练习题

    加qq1126137994 一起学习更多技术!!! 有一个矩阵map,它每个格子有一个权值.从左上角的格子开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有 ...

  8. 【常见笔试面试算法题12续集一】动态规划算法案例1台阶问题练习题

    加qq1126137994 一起学习更多技术!!! 以下问题,都可以用非动态规划的方法做,我为了整理动态规划的方法思路,就全部用动态规划的思路来解决问题,这样还可以简化问题的处理,是时间复杂度更低!! ...

  9. 【常见笔试面试算法题12续集五】动态规划算法案例分析5 01背包练习题

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 一个背包有一定的承重cap,有N件物品,每件都有自己的价值,记录在数 ...

最新文章

  1. STC89C52单片机 LED灯闪烁
  2. 关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析)
  3. Intel Realsense D435 管道配置文件类(pipeline_profile)与流配置文件类(config)
  4. 互联网产品设计常用文档类型-BRD、MRD、PRD、FSD
  5. GIS生涯个人总结及个人感悟
  6. 制作可以 SSH 登录的 Docker 镜像
  7. yii2 Expression解决查询或者条件有mysql函数时
  8. de4dot脱壳方法
  9. 物联网——无线通信技术
  10. 方向键按键转发,模仿笔记本Fn按键
  11. 使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)
  12. MySQL通过分组计算百分比
  13. Java Class类文件的结构
  14. Python-修改密码功能
  15. 简单游戏的c语言程序,[C语言编写小程序]简单打飞碟游戏
  16. 门电路图对照表——国标、IEEE、标准符号对照表
  17. java毕业设计——基于java+Eclipse+jsp的网上手机销售系统设计与实现(毕业论文+程序源码)——网上手机销售系统
  18. 勒索软件攻击的第一步就是钓鱼邮件 从概念到防御思路 这里面都有了
  19. 获取订单API接口系列,可接入erp系统场景
  20. qemu qcow2镜像如何缩小

热门文章

  1. IBInspectable / IBDesignable
  2. python:自动化测试 playwright 库上传和下载
  3. 阿里软件测试工程师手把手教学——如何更好地设计测试用例?
  4. ajax异步后台存放购物车表,jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)...
  5. html协议发展过程中,HTTP协议的演化史以及站长所受的启发
  6. python的难点_汇总Python初学者常见的学习难点
  7. 交叉验证的意义和目的_干货:详解原料药的工艺验证
  8. 一个mac地址对应多个ip_一个关于IP与mac地址绑定的故障
  9. 域名怎么设置非80端口_深信服网关怎么设置端口映射
  10. java下列语句正确的是_下列Java语句中,不正确的一项是( )。