【笔试】三七互娱笔试 JAVA服务端

博主参加了三七互娱的JAVA服务端笔试,题目涉及了Java方法、继承多态、多线程、集合类、装箱、数据结构、概率、操作系统等多个方面。重点包括:判断2的幂、斐波那契数列复杂度、平衡二叉树与红黑树区别、JVM自动装箱、死锁条件、线程安全集合等。总结了不同解法和关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博主前天做了三七互娱的web后端工程师方向的笔试,下面的链接为笔试后的总结:
https://blog.youkuaiyun.com/applying/article/details/80587129
然后第二天就被通知参加今晚的java服务端程序的笔试,目测第一个笔试是跪了,所以才被通知写第二个,em,还是太菜了
Java服务器程序的笔试,与web后端工程师方向的笔试都是一小时,题量都不多,java的只有21个题,14个单选,以及7个不定项选择,没有编程,内容涵盖java的各个方法,继承、多态、多线程、集合类、装箱,以及像数据结构,概率,操作系统的死锁判断等。总结其中的几个问题:
1.判断一个数为2的n次方

  • 有刷过算法题的朋友都知道,如果一个数为2的 n 次方,它的二进制表示中,只有一个数位为1,所以将问题转换为是否一个数的二进制只有一个1
  • 而判断方法很简单,利用 n & (n - 1),如果 n 的二进制只有一位1,则(n - 1)与 n 的二进制表达中没有一位是相同的,两者&运算的结果为0

2.求复杂度,有4个选项,n,n 的 n 次方,2 的 n 次方

public int Fibonacci(int n) {	
	if (n <= 0) {
		return 0;
	}
	if (n == 1) {
		return 1;
	}	
	return f(n - 1) + f(n - 2)
}

这是斐波那契数列的递归解法,是最容易想到,也最容易书写,但是复杂度很大的一种解法,网上有其他解释复杂度的博客,我就不多做重复,最终的结果是:
1.5^n <= f(n+1) <= 2^n, n>=1
一个指数级的复杂度,因此我们应该避免这种解法。
这里补充一下另外两种做法

  • 利用循环:简单好理解,直接贴出代码,复杂度降为O(n)

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值