当前位置:首页 > 科技  > 软件

一个关于 i++ 和 ++i 的面试题打趴了所有人

来源: 责编: 时间:2023-09-28 10:04:33 361观看
导读大家好,我是哪吒。公司最近在招聘实习生,作为面试官之一的我,问了一道不起眼的经典面试题。一、i++和++i有啥区别?大部分的面试者会这样答:i++ 返回原来的值,++i 返回加1后的值。i++是先赋值,然后再自增;++i是先自增,后赋值。

E5E28资讯网——每日最新资讯28at.com

大家好,我是哪吒。E5E28资讯网——每日最新资讯28at.com

公司最近在招聘实习生,作为面试官之一的我,问了一道不起眼的经典面试题。E5E28资讯网——每日最新资讯28at.com

一、i++和++i有啥区别?

大部分的面试者会这样答:E5E28资讯网——每日最新资讯28at.com

  • i++ 返回原来的值,++i 返回加1后的值。
  • i++是先赋值,然后再自增;++i是先自增,后赋值。

下面这个才是主菜。E5E28资讯网——每日最新资讯28at.com

二、高并发场景下i++会遇到哪些问题?

大部分面试者心里肯定在想,这会有啥问题,不就是一个普通的操作嘛!E5E28资讯网——每日最新资讯28at.com

先从i++操作说起,一个命令可以拆分成三部分:E5E28资讯网——每日最新资讯28at.com

  • 取值
  • ++操作
  • 赋值

我去,这不是吹毛求疵,鸡蛋里挑骨头嘛!这面试不参加也罢!E5E28资讯网——每日最新资讯28at.com

但是,你想啊,如果当线程执行到取值或者++操作时,线程突然切换了,会不会有问题呢?E5E28资讯网——每日最新资讯28at.com

step1:双线程场景

public class ThreadTest1 {    int a = 1;    int b = 1;    public void add() {        System.out.println("add start");        for (int i = 0; i < 10000; i++) {            a++;            b++;        }        System.out.println("add end");    }    public void compare() {        System.out.println("compare start");        for (int i = 0; i < 10000; i++) {            boolean flag = a < b;            if (flag) {                System.out.println("a=" + a + ",b=" + b + "flag=" + flag + ",a < b = " + (a < b));            }        }        System.out.println("compare end");    }    public static void main(String[] args) {        ThreadTest1 threadTest = new ThreadTest1();        new Thread(() -> threadTest.add()).start();        new Thread(() -> threadTest.compare()).start();    }}

E5E28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-11790-0.html一个关于 i++ 和 ++i 的面试题打趴了所有人

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 利用SpeechToText功能创建交互式语音助手应用程序的实现指南

下一篇: 彻底搞懂Spring的Bean加载

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 中兴AX5400Pro+上手体验:再升级 双2.5G网口+USB 3.0这次全都有

    2021年11月的时候,中兴先后发布了两款路由器产品,中兴AX5400和中兴AX5400 Pro,从产品命名上就不难看出这是隶属于同一系列的,但在外观设计上这两款产品可以说是完全没一点关系
  • 十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库:让你的应用更亲民友好,实现视频通话无痛接入! 除了基本用法外,还有一些进阶用法可以更好地利用该库。自定义 STUN/TURN 服务器配置WebRTC.Net 默认使用 Google 的
  • 品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现&ldquo;美团直播&rdquo;的固定入口。在直播聚合页面,外卖&ldquo;神枪手&rdquo;直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 2299元起!iQOO Pad明晚首销:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其最大的卖点
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top