1 SQL查询中,只有满足联接条件的记录才包含在查询结果中,这种联接为内连接。
解析:
Inner join:又称为等值连接,只选择满足条件的行
Outer join:外连接会保存没有关联的行
left outer join:保存左边表的所有行,右边没有的行值为NULL
right outer join:保存右边表的所有行,左边没有的行值为NULL
full join:保存所有没有关联的行,当某行在另一个表中没有匹配行时,则另一个表的列为空值
https://jingyan.baidu.com/article/60ccbceb9578f164cab197f4.html
2 编号为1至10个果盘中,每盘都盛有水果,共盛放100个。其中第一盘里有16个,并且编号相邻的三个果盘中水果数的和都相等,求第8盘中水果最多可能有几个?
解析:正确答案:11
由:相邻三个和相等
-> 盘中有相等个数的:1-4 2-5 3-6 4-7 5-8 6-9 7-10
-> 盘中有相等个数的:1-4-7-10 2-5-8 3-6-9
由:第1个盘子有16个
-> 1-4-7-10组有64个
由:总共100个
-> 2-5-8 3-6-9两组的和为36个
由:每个盘子至少1个
-> 3x + 3y = 36,x>0, y>0
-> y = 12 - x, x>0, y>0
-> x < 12
-> x的最大取值为11
3 以下哪个输出序列不可能是二叉查找树(Binary Search Tree)后序遍历的输出。
1, 2, 3, 4, 5
5, 4, 3, 2, 1
1, 3, 2, 4, 5
1, 2, 5, 3, 4
解析;D
对于二叉查找树的后序遍历序列,最后一位是它的根结点,那从左往右数,第一个比这个根结点大的结点就属于根结点的右子树(二叉排序树的一个结点的右子树上的结点都大于它自己,而左子树则都小于它自己)因此在这个结点后面不会存在比根结点小的数字
4 有一次数学比赛,共有A,B和C三道题目。所有人都至少解答出一道题目,总共有25人。在没有答出A的人中,答出B的人数是答出C的人数的两倍;单单答出A的人,比其他答出A的人总数多1;在所有只有答出一道题目的人当中,答出B和C的人数刚好是一半。求只答出B的人数。
解析:所有人至少答出一道题,所以答对的情况有A,B,C,AB,AC,BC,ABC 7种情况
没有答出A的人中,答出B的人数是答出C的人数的两倍,即 B+BC = 2(C+BC);
单单答出A的人,比其他答出A的人总数多1,即 A = 1+AB+AC+ABC;
只答出一道题目的人当中,答出B和C的人数刚好是一半,即 A = B+C;
一共25人,可得 A+B+C+(A-1)+(B-2C) = 25 ==> 4B+C = 26;
B>2*C 所以B=6,C=2,A=8(B=5时C=6不满足条件,B=7时C<0不满足条件),还可得出BC=2,AB+AC+ABC=7
5 如果要删除的字段与建立索引的字段相同,删除效率会提高,如果不同,效率降低
6 TCP 三次握手的过程,accept 发生在三次握手哪个阶段?
解析:第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接
7 以下http状态码中哪一个是永久重定向?
解析:HTTP协议的响应报文由状态行、响应头部和响应包体组成,其响应状态码总体描述如下:
1xx:指示信息–表示请求已接收,继续处理。
2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操作。
4xx:客户端错误–请求有语法错误或请求无法实现。
5xx:服务器端错误–服务器未能实现合法的请求。
常见状态代码、状态描述的详细说明如下。
200 OK:客户端请求成功。
206 partial content服务器已经正确处理部分GET请求,实现断点续传或同时分片下载,该请求必须包含Range请求头来指示客户端期望得到的范围
300 multiple choices(可选重定向):被请求的资源有一系列可供选择的反馈信息,由浏览器/用户自行选择其中一个。
301 moved permanently(永久重定向):该资源已被永久移动到新位置,将来任何对该资源的访问都要使用本响应返回的若干个URI之一。
302 move temporarily(临时重定向):请求的资源现在临时从不同的URI中获得,
304:not modified :如果客户端发送一个待条件的GET请求并且该请求以经被允许,而文档内容未被改变,则返回304,该响应不包含包体(即可直接使用缓存)。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
t Found:请求资源不存在,举个例子:输入了错误的URL。
8 Java 线程中关于 wait 和 sleep 方法相关的描述正确的是?
它们都会让当前线程释放锁。
它们都是 Thread 类里面的方法。
wait 方法用于线程间通信,调用后不会释放锁。
sleep 方法强制线程休眠,但不会释放锁。
解析: Wait 是object 方法释放锁 sleep 是thread 类方法 不释放锁
9 数字证书不包含( )。
颁发机构的名称
证书持有者的私有密钥信息
证书的有效期
CA签发证书时所使用的签名算法
解析:数字证书的格式普遍采用的是X.509V3国际标准,一个标准的X.509数字证书包含以下一些内容:
1、证书的版本信息;
2、证书的序列号,每个证书都有一个唯一的证书序列号;
3、证书所使用的签名算法;
4、证书的发行机构名称,命名规则一般采用X.500格式;
5、证书的有效期,通用的证书一般采用UTC时间格式;
6、证书所有人的名称,命名规则一般采用X.500格式;
7、证书所有人的公开密钥;
8、证书发行者对证书的签名。
9 TCP 连接有多重状态,如何在系统中查看某个连接的状态 ?
(1) ping :连接是否正常,主要测试抖动,丢包率
(2) netstat :某个连接的状态
(3) ifconfig:显示或配置网络的设备
(4) traceroute:跟踪数据包到达主机所经过的路由工具
10 以下哪种方式不被用来解耦?
delegate
mutex
NotificationCenter
block
解析: Mutex类就是C++中实现互斥锁的类,互斥锁有可重入和不可重入之分:
mutex是不可重入的互斥锁,recursive_mutex是可重入的互斥锁;
加上上锁时间的限定后,就有了另外两个互斥锁:mutex_timed, recursive_timed_mutex,分别是可重入/不可重入的互斥锁。
11 客户投诉 英语流利说APP 懂你英语课程 请求失败,请分析可能的原因以及解决方案,至少3点。
解析:1. 原因:网络出错。 解决方案:检查手机网络状况
2. 原因:错误的请求。 解决方案:查看前端是否出现意外的bug导致请求出错。
3. 原因:服务器忙等。解决方案:使用高并发处理请求。
4. 原因:客户权限出现问题。解决方案:检查客户是否已登录,或者具有权限。
5. 原因:服务器后台接口出错。解决方案:查看后台接口运行情况。
6. 原因:前端处理数据出错。解决方案:查看前端代码逻辑。
7. 原因:版本升级导致的接口更换。解决方案:查看版本号和先版本号的差异。
8. 原因:服务器无返回数据。解决方案:检查数据库状态。
9. 原因:请求超时。解决方案:查看是否出现请求超时的情况。
10. 原因:服务器掉线。解决方案:重启服务器。
11. 原因:前端逻辑出错。解决方案:查看服务器逻辑。
12 输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)。
解析:`在这里插入代码片链接:https://www.nowcoder.com/questionTerminal/03d341fb6c9d42debcdd38d82a0a545c
来源:牛客网
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] nums = new int[N];
for (int i = 0; i < N; i++) {
nums[i] = sc.nextInt();
}
int max = nums[0],sum = 0;
for(int i = 0;i < nums.length;i++){
sum += nums[i];
//更新
if(sum > max)
max = sum;
//sum并不是记录最大连续和,只记录大于零的和,只要连续和小于0
//则重新开始计算和,因为nums[i]加上一个负数肯定比它本身小
if(sum < 0){
sum = 0;
}
}
System.out.println(max);
}
}`