首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一道有趣 Java 基础题

问题 在一个 Java 群里有位群友分享了一道关于 Java 题目,问代码是否抛异常。...不知道大家是怎么考虑。后来这位群友,给出答案是不会抛出异常,输出结果是 nullnull,且计算长度是 8 。感觉比较有意思,就自己分析了一下。...还是需要从 Java 内部去进行了解。 分析 分析最直接方法应该是看 JDK 源码,但是 JDK 代码浩如烟海,不知从何看起。那么就直接看其反汇编代码。...那么,这里我们就来看 StringBuilder append 方法源码(如果不看反汇编代码,我根本想不到这里要看是 StringBuilder 类 append 方法)。...我个人觉得,在项目中总会出现各种奇奇怪怪问题,而一些奇奇怪怪问题却是我们平时疏忽基础或细节造成,因此也在空闲之余,多多关注基础知识和技术细节,会有助于自己解决很多奇奇怪怪问题。

33240
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一道有趣树状数组题

    有趣树状数组题目 Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gathering of...两头牛之间通讯花费为max(ai,aj)*dis。两牛音量最高值 * 两牛距离,求所有牛之间交流花费。 暴力的话就是O(n^2)。题目数据这样子搞肯定超时。那么我们可以想想数据结构来优化。...可以想到,我们对每对牛进行处理时候,我们优先考虑是音量大那头牛。那么我们从音量小牛开始算起。先按音量排个序。...前面的牛距离总和sumfront为当前牛位置 * 在前面的牛个数(音量比当前牛小)减去到当前牛累计位置之和。...sumlast计算很巧妙,用已经遍历过前缀和(音量比当前牛小,代码中用total表示)减去当前牛前面的所有牛位置之和再减去当前位置 * 右边个数(这里包括它本身)`。

    47900

    一道有趣面试题

    再早些在大二时候,有个学姐在群里问过一道她遇见一道类似的面试题,我们先来从这道题开始,逐步剖析这种randX()-->randY()题目怎么做。   ...当时我给出了一个正确解答,但没做过详细分析。   我解答是这样,用两次调unFairRand结果组合来返回0或者1,两次结果是01就返回0,10就返回1,00或者11就重新算一次。...01和10概率都是16%。算一次就返回0和1概率是32%,但还有68%可能再算一次。...不过不用担心,我们构造函数不管内部计算多少次,只要返回1或者0,其概率是一样,这也满足题目要求,代码如下。...回顾下题目还有另一个要求,尽可能少调用给你rand函数,从概率角度来看,取数越大,需要再次计算几率就越小,调用给定函数次数就越少。

    47410

    一道有趣Map迭代题

    需求:一个map,key为String类型,value为Integer类型,value保存了10个数字,其中有小于10,有大于10,设计一种方法返回把map中大于10数字都删除map。...key装到list中 List list=new ArrayList(); for (Entry entry :...,将value>10元素key装到一个list里面,然后在遍历list过程中对每一个元素执行map.remove(key)方法。...方法3是重新创建一个Map,将原来map遍历出来,将value<=1mapkey和value装到新map中,最后返回新创建map。 其中方法1和方法3都能执行成功,如图 ?...function2.png 会发生并发修改异常,是因为在迭代时候操作了集合,而map很关键一点就是:不能在迭代过程中执行集合任何方法。

    62200

    一道C语言题目

    下午,在上班,读者发来一道题目,问我怎么做。我大概瞄了一眼,看题目也不难。就先让他自己上网查下。 过了一会,他说查不到,问了群里,大家也不太会。 好吧,起码这位读者自己思考过,也问过了。...题目如下,找出代码中错误地方,并改正。...应该改为如下形式。 char a[6]; char *str=a; 有争议地方是 printf(str); 。第一次见这种用法,第一反应是不对。...由于printf支持可变参数,所以后续变量个数就需要通过str中格式化串来确定。...当str串中包含%s,%d,%c等格式化串时,printf就会去栈中找这个格式化串对应变量,但实际上,根本没有向printf压入更多参数,因此就会出现打印失败或者程序崩溃现象。

    54430

    插播:一道有趣程序题 (中)

    在上一期中,F老师遇到了一个有意思题目,在小T同学帮助下得到了答案。 F老师把小T同学送走以后,思考了以下几个推广问题: 1....如果机器人运行轨道是环形,环周长步数为X,这种算法最坏情况下,两个机器人需要多少个周期才能相遇? 2....如图,机器人A和机器人B空降在一个环形离散轨道上,轨道步数为X,两个机器人距离为Y。 由于轨道为环形,从另一个方向看,两个机器人之间距离是(X-Y)。...F老师由于治学不严谨,被小T同学嘲笑以后,把题目改了: 机器人A和机器人B空降在周长为X环形轨道上,运行前文所述程序,需要满足什么样条件,机器人A和机器人B才可能相遇?...由于我们设定条件是B发现了A踪迹,才从进二退一前进方式改为全速前进,也就是说,A追上B时,是没有走完整个环形轨道。 因此,我们得到了结论: X > 3Y-1时,A可以追上B。

    30330

    插播:一道有趣程序题 (下)

    在上期中,F老师分析出了扩展题1漏洞和答案。那么,我们再来看看扩展题2和3: 2....开放问题:我们把问题扩展到二维平面,并为机器人增加两条指令:up (向上走),down (向下走),在两个机器人无法通信前提下,有没有办法让两个机器人相遇?...让我们在坐标轴上标出两个机器人可能空降位置: 可见,这个问题我们可以转化为原问题,只需要规定机器人行走路线—— 如图,机器人沿着橙色箭头走,其中,走过实线经过点则执行mark指令记录坐标,而走过虚线经过点则不记录坐标...我们发现,由于我们可以将机器人路径从二维转换为一维,问题是有解。 再让我们回到问题2。...问题2不可解原因是,X和Y坐标完全随机,路径是无法从二维转换为一维——因此无法编制程序,让两个机器人运行相同程序还可以相遇。 那么,问题3程序,你们知道怎么写了吗?

    41430

    一道关于 TCP 连接题目

    心想暗笑,这问题难不倒我,哈哈。 但组长只是微微一笑,继续问到:你知道在建立 Socket 连接最开始1 秒,客户端发送了多大数据吗? 小陈听后,瞬间一脸懵逼, 久久说不出话来。...面向 Socket 编程,是对 TCP/IP 协议封装和应用。建立 TCP 连接是三次握手, 那么整个 TCP 连接建立过程,客户端只两次向服务器发送数据包。这两个数据包总大小应该是大小了。...怎么才能获取这两个数据库大小呢? 突然他想到用抓包方式。 他用启动 Wireshark 来抓包,以下是他捕获一个完整 TCP 连接图。...第三次握手详细信息图如下: 因此,第三次是发送数据包大小是 20 字节。 综上所述:在建立 Socket 连接最开始1 秒,客户端一共发送了 32 + 20 = 52字节。...以上故事纯属虚构,但是内容是真实。是自己研究 TCP 协议中,在阅读《TCP/IP详解卷1:协议》过程中,还是云里雾里。所以通过抓包方式来加深理解。如果说错地方,请帮忙指出,另外轻喷。

    27010

    一道关于 TCP 连接题目

    心想暗笑,这问题难不倒我,哈哈。 但组长只是微微一笑,继续问到:你知道在建立 Socket 连接最开始1 秒,客户端发送了多大数据吗? 小陈听后,瞬间一脸懵逼, 久久说不出话来。...面向 Socket 编程,是对 TCP/IP 协议封装和应用。建立 TCP 连接是三次握手, 那么整个 TCP 连接建立过程,客户端只两次向服务器发送数据包。这两个数据包总大小应该是大小了。...怎么才能获取这两个数据库大小呢? 突然他想到用抓包方式。 他用启动 Wireshark 来抓包,以下是他捕获一个完整 TCP 连接图。...第三次握手详细信息图如下: 因此,第三次是发送数据包大小是 20 字节。 综上所述:在建立 Socket 连接最开始1 秒,客户端一共发送了 32 + 20 = 52字节。...以上故事纯属虚构,但是内容是真实。是自己研究 TCP 协议中,在阅读《TCP/IP详解卷1:协议》过程中,还是云里雾里。所以通过抓包方式来加深理解。如果说错地方,请帮忙指出,另外轻喷。

    34310

    插播:一道有趣程序题 (上)

    如果在一维整数数轴上,随机空降两个机器人,并且固化了相同由这四条指令构成程序,那么,如何编写这个程序,使得两个机器人能够相遇?...F老师正准备回答小T,顺便跟妹子炫耀一下自己学过“阿喀琉斯永远追不上乌龟”“芝诺悖论之追龟辩”,突然,大脑中一道灵光闪过—— 如果机器人P看见机器人Q标记时,加速追赶呢?...虽然机器人没有加速追赶指令,但如果让前面的机器人减速走呢? F老师想到了爷爷讲过故事—— 在淮海战役中,解放军某部奉命追击国民党军黄维兵团。...这样,被追击者执行以下循环: 走两步 回退一步 做标记 由于被追击机器人不可能发现追击者标记,它会一直执行这个循环。...F老师痛定思痛,决定把这道题做改造: 如果机器人运行轨道是环形,环周长步数为X,这种算法最坏情况下,两个机器人需要多少个周期才能相遇?

    31230

    盘点Python列表一道基础题目

    一、前言 前几天在Python最强王者交流群有个叫【Chloe】粉丝问了一个Python列表问题,这里拿出来给大家分享下,一起学习下。...List)却是8,len(List)-1就是7了,不会进入到该循环,所以不会有打印 print(List[i] + List[2]) 别走,这个题目还有变形,且看【Chloe】发来另外一个题目...上周时候,也确实发过列表这个坑文章,具体细节可以前往文章查看:盘点Python列表在删除时候一个坑。这里给代码加了点注释,理解起来应该就不难了。...7了,而List[len(List) - 1]=List[7],对应值是9 print(f"此时List[len(List) - 1]是{List[len(List) - 1]},此时...这篇文章主要分享了Python列表中增加问题,每次循环会检查List,针对该问题给出了具体解析和代码演示,帮助粉丝顺利解决了问题。

    27910

    一道关于组合js算法题目

    题图 From 花瓣网 By Clm 前不久在网上看到这样一道面试题目,题面是这样: 有一个数组,如果有3个值:[3,2,6]。...原题目要求是用java来实现,这里我给换成了javascript,语言其实无关紧要,就像leetcode题目,主要是看思维方式。 代码如下: ?...大体思路是: 1、大循环套小循环,大循环根据数组程度进行循环,每循环一次,将数组第一项剔除。...其实这个题目还有很多变式,比如将需求改为,从数组中随机选择两个值能有多少种组合,随机选择三个呢?...大家可以思考一下,这些小思考对编程思维形成很有帮助,笔者也是很乐于写写这方面的文章,大家有什么好题目可以分享出来,欢迎大家留言。

    67331

    一道栈和队列经典题目

    今日分享一个关于栈和队列经典题目,笔者在秋招过程中笔试考过多次。...题目: 设栈S和队列Q初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队序列是e2、e4、e3、e6、e5、e1,则栈S容量至少应该是?...解答: 出队先出e2表示e1,e2进栈后出e2(这时栈容量最大为2),接着出e4,e3表示e3,e4进栈后出e4,e3(这时栈容量最大为3),再出e6,e5表示e5,e6进栈后出e6,e5(这时栈容量最大为...3),最后出e1,所以答案应该是 3 这里考察知识点就是:栈(stack)是先入后出,后入先出,删除与加入均在栈顶操作。...如果喜欢我文章,欢迎关注、点赞和转发,下面可以留言~~~

    50730

    PHP笔试准备题目之基础题目

    URL中发送 4.index.php脚本如何访问表单元素email值?...9.当把一个有两个同名元素表单提交给PHP脚本时会发生什么?...A.它们组成一个数组,存储在超级全局变量数组中 B.第二个元素值加上第一个元素值后,存储在超级全局变量数组中 C.第二个元素将覆盖第一个元素 D.第二个元素将自动被重命名 E.PHP输出一个警告...9.对于收到查询字串和POST信息,PHP只是简单把元素添加进对应超级变量数组中。结果就是如果有两个元素同名,前一个会被后一个覆盖。答案是C。 10.只有B永远正确。...默认情况下,PHP把所有会话信息存储在/tmp文件夹中;在没有这个文件夹操作系统中(比如Windows),必须在php.ini中给session.save_path设置一个合适位置(如c:\Temp

    3.2K20

    一道有趣笔试题(二)、降低功耗

    看到了一些interesting题,和大家分享一下,如果大家有什么额外见解欢迎大家公众号后台留言! 题目: 修改下面的电路,使其功耗最小,同时保持功能不变 ?...怎么做暂且不讲,老样子,容我先念叨一下这类题原理!...首先要明确是: 在同步数据电路设计中,降低动态功耗最有效以及使用最广技术是在默写指定区域数据流特定阶段在不需要时钟处于活动状态时禁止时钟活动,因为FPGA功耗大多数是与系统时钟翻转有关,所以临时性停止系统设计中某些处于非活动区域时钟往往是最小化这类功耗最直接方法...怎么做: 本案例中,在EN==1时,D触发器输出是一个翻转信号,在EN==0时,D触发器输出进行保持,所以使用门控时钟使能方式: 代码: module gh( input D, input EN,

    61030
    领券