好未来笔试-Java-20220813

本文最后更新于:2022年8月13日 晚上

单选

1、异或运算
2、栈的先入后出性质
3、引用类型和值类型创建对象和调用函数时分别会创建几个t对象?

1
2
3
4
5
T t = new T();
func(t);

函数定义如下:
public void func(T t){}

4、throw和throws的区别

  1. throws 关键字用于声明异常,它的作用和try-catch类似;而throw 关键字用于显示地抛出异常
  2. throws 关键字后面跟异常的名字;而 throw 关键字后面跟的是异常的对象
  3. throws 关键字出现在方法签名上;而 throw 关键字出现在方法体内部;
  4. throws 关键字在声明异常时可以跟多个异常,用逗号隔开;而 throw 关键字每次只能抛出一个异常;

5、TCP套接字函数哪个函数会发生阻塞?哪个不会产生阻塞?
accept(), bind(), write(), read()

6、子类A,父类B,父子类中均有:构造函数、静态代码块、非静态代码块;问 new 一个子类对象,这6个部分的调用顺序是怎么样的?

7、

问答

计算机中你了解的端口号和对应的服务有哪些?

昨天看图解TCP刚看了端口号相关的,结果就记住了22,80常用的,其他的都忘了。。

知名端口号: 0-1023分配

动态分配端口号的取值范围:49152-65535之间。

TCP知名端口号:
端口号-服务
21-FTP
22-SSH

23-telnet
25-SMTP
20-HTTP
443-HTTPS, http protocol over TLS/SSL
53-DNS

编程1:leetcode208 实现Trie前缀树

https://leetcode.cn/problems/implement-trie-prefix-tree/

好家伙,我在c++编译器里一直报错,一看结果是没有切换成Java语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class Trie {
private Trie[] children; // 当前节点有一个数组,存放子节点的值
private boolean isWord = false; // 判断到该节点的路径是否是一个完整的单词

/**
* 初始化前缀树对象
*/
public Trie() {
children = new Trie[26];
isWord = false;
}

/**
* 向前缀树中插入字符串 word
* @param word
*/
public void insert(String word) {
Trie node = this;// 当前this就是根节点
for (Character ch : word.toCharArray()) {
int idx = ch - 'a';

// 子节点为空,创建新的节点,移动到子节点
if (node.children[idx] == null) {
node.children[idx] = new Trie();
node = node.children[idx]; // 移动到根节点的子节点
}
else {
node = node.children[idx];
}
}
node.isWord = true; // 标记字符串末尾
}

/**
* 判断 word 是否是树中的完整字符串
* @param word
* @return
*/
public boolean search(String word) {
Trie node = this;

for (Character ch : word.toCharArray()) {
// 数组索引
int idx = ch - 'a';

// 不存在,直接返回false
if (node.children[idx] == null) {
return false;
}
else {
node = node.children[idx];
}
}
return node.isWord;
}

/**
* 判断 树中是否有 word 出现,前缀也可以
* @param word
* @return
*/
public boolean startsWith(String word) {
Trie node = this;

for (Character ch : word.toCharArray()) {
int idx = ch - 'a';
if (node.children[idx] == null) {
return false;
}
else {
node = node.children[idx];
}
}
// 只要遍历完word了,就直接返回true
return true;
}
}

编程2:leetcode hard 25. K 个一组翻转链表

高频题,刷的时候跳过了

https://leetcode.cn/problems/reverse-nodes-in-k-group/


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!