在当今快速发展的科技行业中,JAVA工程师已成为企业不可或缺的重要角色。他们不仅需要精通JAVA编程语言,还需要具备解决复杂问题的能力、团队协作精神以及不断学习的进取心。作为一名优秀的JAVA工程师,你将有机会参与到企业的核心项目中,为企业的创新和发展贡献自己的力量。在接下来的面试中,我们将深入探讨你的技能、经验和职业发展规划,以便更好地了解你是否适合这个职位。请准备展示你的JAVA技能和才华,让我们一起开启这场知识与技能的交流盛宴吧!
6.下面java代码求一个比较大的正整数是不是回文数,比如212是回文数,返回true,-212不是回文数,返回false,正整数的长度为N,那么如下代码的时间复杂度以及空间复杂度是多少?
public boolean isPalindrome(long x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
long tempNum = 0;
while (x > tempNum) {
tempNum = tempNum * 10 + x % 10;
x /= 10;
}
return x == tempNum || x == tempNum / 10;
}
A:O(logN),O(1)
B:O(logN),O(logN)
C:O(N),O(1)
D:O(N),O(logN)
参考答案:A
7.下列选项中,不可能将当前进程唤醒的事件是?
A:I/O结束
B:某进程退出临界区
C:某进程释放锁
D:当前进程的时间片用完
参考答案:D
8.一个算法的时间复杂度由以下递归方程表示(N是非常大的整数,且是2的幂): (1).T(1)=1 (2).T(N)=2T(N/2)+N 请问T(N)的表达式为多少?
A:T(N)=Nlog2N
B:T(N)=N+Nlog2N
C:T(N)=N2
D:T(N)=N+N2
E:T(N)=Nlog2N+1
参考答案:B
9.小度遇上了某个需求,求给定两个字符串的最长公共子序列的长度: 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。
例如,"bad" 是 "baidu" 的子序列,但 "bud" 不是 "baidu" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。 如输入:
text1 = "baidu", text2 = "bad"
输出:
3
小度写了如下C++代码完成了此功能:
int dp[1000][1000];
int max(int a,int b)
{
if(a>b) return a;
return b;
}
int longestCommonSubsequence(string text1, string text2) {
int len1=text1.size();
int len2=text2.size();
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
if(text1[i]==text2[j]){
dp[i+1][j+1]=dp[i][j]+1;
}
else{
dp[i+1][j+1]=__________;
}
}
}
return dp[len1][len2];
}
则以上核心代码填什么可以正确实现此功能?
A:max(dp[i+1][j],dp[i][j+1])
B:max(dp[i+1][j],dp[i][j])
C:max(dp[i][j+1],dp[i][j])
D:max(dp[i-1][j],dp[i][j-1])
E:max(dp[i-1][j],dp[i][j])
参考答案:A
10.已知字符集{ a, b, c, d, e, f },若各字符出现的次数分别为{ 6, 3, 8, 2, 10, 4 },若字符f对应的哈夫曼编码为100,则字符e对应的哈夫曼编码为?
A:11
B:10
C:101
D:110
E:01
F:无法确定
参考答案:A
11.下面关于Java里面的HashMap类说法正确的是?
A:HashMap的底层直接由红黑树实现的
B:HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致
C:HashMap每次扩容都是随机扩容,扩容之后的大小都在原来的容量到原来容量的平方里,这样可以更好的存储元素和不浪费空间
D:HashMap保存了记录的插入顺序,在用Iterator遍历HashMap时,先得到的记录肯定是先插入的
参考答案:B
12.有一张挑战赛记录表Info表如下,有三个字段id、name、score,不能选出每个name的score最高的记录的sql是(要包含所有字段) +---------+--------+-------+
| id | name | score |
+---------+--------+-------+
| 1 | B | 9.95 |
| 2 | A | 10.99 |
| 3 | C | 1.69 |
| 4 | B | 19.95 |
| 5 | A | 6.96 |
+---------+--------+-------+
A:select id,name,score
from Info s1
where score = (
select max(s2.score)
from Info s2
where s1.name=s2.name);
B:select id,s1.name,s1.score
from Info s1
join (
select name,max(score) score
from Info
group by name) s2
on s1.name=s2.name and s1.score=s2.score;
C:select s1.id,s1.name,s1.score
from Info s1
left join Info s2
on s1.name=s2.name and s1.score<s2.score
where s2.id is null;
D:select s1.id,s1.name,s1.score
from Info s1
left join Info s2
on s1.name=s2.name and s1.score>s2.score
where s2.id is null;
参考答案:D
13.若栈 S1 中保存整数,栈 S2 中保存运算符,函数 F()依次执行下述各步操作: (1)从 S1 中依次弹出两个操作数 a 和 b; (2)从 S2 中弹出一个运算符 op; (3)执行相应的运算 b op a; (4)将运算结果压人 S1 中。 假定 S1 中的操作数依次是 3, 9, 3, 2(2 在栈顶),S2 中的运算符依次是*, - , +(+在栈顶)。调 用 3 次 F()后,S1 栈顶保存的值是?
A:12
B:-12
C:9
D:-9
E:-15
参考答案:A
14.下面关于二叉查找树说法正确的有?
A:中序遍历得到节点值的序列相同的二棵二叉查找树,它们的前序遍历可能不相同
B:中序遍历得到节点值的顺序一定是有序的
C:中序遍历得到节点值的序列相同的二棵二叉查找树,它们的树的高度可能不相同
D:B树是一颗二叉查找树
参考答案:A,B,C
15.将 IP 地址空间 211.211.1.0/24 划分为2个子网,每个子网需分配的IP地址数不少于120个,请问以下哪2个子网划分结果可能是对的?
A:子网 1:211.211.1.0/25,子网 2:211.211.1.128/25
B:子网 1:211.211.1.0/26,子网 2:211.211.1.128/26
C:子网 1:211.211.1.0/25,子网 2:211.211.1.64/25
D:子网 1:211.211.1.0/26,子网 2:211.211.1.64/26
E:子网 1:211.211.1.0/25,子网 2:211.211.1.128/26
参考答案:A
16.某操作系统中,页面大小为4k,分配给每个进程的物理页面数为1。在一个进程中,定义了如下二位数组int A[512][512],该数组按行存放在内存中,每个元素占8个字节。有如下编程方法: 编程方法:
for (int j = 0; j < 512; j++)
{
for (int i = 0; i < 512; i++)
{
A[i][j] = 0;
}
}
那么以上程序运行会产生多少次缺页?
A:0
B:512
C:512*512
D:(512*512)/2
E:512*1024
参考答案:C
17.下列关于Linux内存管理说法不正确的是():
A:malloc()对应到系统调用上两种实现方式,分别为brk()和mmap()来分配
B:小块内存(小于128K)使用mmap()来分配,大块内存(大于128K),则直接使用内存映射brk()
C:内存回收的方式有三种:LRU(Least Recently Used)算法,回收缓存;Swap 机制,回收不常访问的匿名页;OOM(Out of Memory)机制,杀掉占用大量内存的进程
D:LRU 回收算法维护着active(记录活跃的内存页)和inactive(记录非活跃的内存页)两个双向链表
E:活跃的内存页和非活跃的内存页可通过查看/proc/meminfo查询
参考答案:B
