🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🤺🤺🤺
目录
一、选择题
二、编程题
🔥猴子分桃
🔥反转部分单向链表编辑
一、选择题
1、如果希望监听TCP端口9000,服务器端应该怎样创建socket?
A new Socket(“localhost”,9000);
B new ServerSocket(9000);
C new Socket(9000);
D new ServerSocket(“localhost”,9000);
正确答案: B
服务器端使用ServerSocket(int port)-默认在本地指定端口号监听TCP端口客户端使用Socket来连接服务器 Socket(IP,port)。
2、下列哪个类的声明是正确的?
A abstract final class HI{}
B abstract private move(){}
C protected private number;
D public abstract class Car{}
正确答案: D
3、java 接口的修饰符可以为()
A private
B protected
C final
D abstract
正确答案: D
4、jre 判断程序是否执行结束的标准是()
A 所有的前台线程执行完毕
B 所有的后台线程执行完毕
C 所有的线程执行完毕
D 和以上都无关
正确答案: A
JRE:Java运行时环境
JDK:Java开发工具包,包含了JRE
什么时候Java进程认为程序全部执行完毕:所有前台线程(用户线程)执行完毕 。setDameon(true)
一般我们创建的线程都是前台线程后台线程:JVM垃圾回收线程。
5、int i=5;
int s=(i++)+(++i)+(i–)+(–i);
s=( )//s 的值是什么?
A 28
B 25
C 21
D 26
E 24
F 23
正确答案:E
6、如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}
A i=0;j=0
B i=1;j=1
C i=0;j=1
D i=1;j=0
正确答案: D
7、下面不属于Object类中方法的是:
A hashCode()
B finally()
C wait()
D toString()
正确答案: B
finally是一个代码块,不是一个方法。
8、下列哪项不属于jdk1.6垃圾收集器?
A Serial收集器
B parNew收集器
C CMS收集器
D G1收集器
正确答案: D
D是JDK7有的。
9、instanceof运算符能够用来判断一个对象是否为:
A 一个类的实例
B 一个实现指定接口的类的实例
C 全部正确
D 一个子类的实例
正确答案: C
10、对于java类型变量char c,short s,float f,double d,表达式c*s+f+d的结果类型为()
A float
B char
C short
D double
正确答案: D
只要牵扯到算数运算,所有类型都会转为最大的类型而后进行运算。
二、编程题
🔥猴子分桃
猴子分桃__牛客网
【解题思路】:**公式类推
因为每次分5堆都会多出来1个,所以我们借给猴子们4个,以致每次都可以刚好分成5堆 并且,每次给老猴子的桃子都不在我们借出的那4个中,这样最后减掉4就可以得到结果。 假设最初由x个桃子,我们借给猴子4个,则此时
有x+4个, 第一个猴子得到(x+4)/5,剩余(x+4)(4/5)个 第二个猴子分完后剩余(x+4) (4/5)^2个 第三个猴子分完后剩余(x+4) (4/5)^3个 依次类推,第n个猴子分完后剩余(x+4)(4/5)^n 要满足最后剩余的为整
数,并且x最小,则当 x+4=5n时,满足要求;此时,x=5n - 4; 老猴子得到的数量为:x+4)*(4/5)^n + n - 4= 4^n + n - 4 最后的 +n是因为每个小猴子都会多出一个给老猴子,-4是还了借的4个。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
if(n==0) break;
long a = (long) (Math.pow(5, n) - 4);
long b = (long) (Math.pow(4, n) + n - 4);
System.out.println(a + " " + b);
}
}
}
🔥反转部分单向链表
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
class ListNode {
public int val;
public ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] list = br.readLine().trim().split(" ");
ListNode head = new ListNode(Integer.parseInt(list[0]));
ListNode cur = head;
for(int i = 1; i < n; i++){
cur.next = new ListNode(Integer.parseInt(list[i]));
cur = cur.next;
}
String[] params = br.readLine().split(" ");
int start = Integer.parseInt(params[0]);
int end = Integer.parseInt(params[1]);
head = reversePartLinkedList(head, start, end);
while(head != null){
System.out.print(head.val + " ");
head = head.next;
}
}
private static ListNode reversePartLinkedList(ListNode head, int start, int end) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode prev = dummy;
for(int i = 1; i < start; i++)
prev = prev.next;
ListNode cur = prev.next; // 开始翻转的链表头结点
for(int i = start; i < end; i++){
ListNode temp = cur.next;
cur.next = temp.next;
temp.next = prev.next;
prev.next = temp;
}
return dummy.next;
}
}