单选,填空,问答,编程
一、第一份
文章链接:https://blog.youkuaiyun.com/hezuo1181/article/details/82462296
1、java语言不允许使用(指针)访问内存,更不允许(指针数组)访问内存。
2、进程和线程的概念,两者间的区别
- 基本概念
- 进程:是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发;
- 线程是进程的子任务,是CPU调度和分配的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。
- 区别
- 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。
- 进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。)
- 进程是资源分配的最小单位,线程是CPU调度的最小单位;
- 系统开销: 由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/o设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。
- 通信:由于同一进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的实现,也变得比较容易。进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。在有的系统中,线程的切换、同步和通信都无须操作系统内核的干预
- 进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。
- 进程间不会相互影响 ;线程一个线程挂掉将导致整个进程挂掉
- 进程适应于多核、多机分布;线程适用于多核
3、cookies与session的区别和自己的工作原理
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
参考文章链接:https://www.cnblogs.com/nieliangcai/p/8864791.html
4、web应用中可能出现的安全问题。
参考文章链接:https://blog.youkuaiyun.com/zhusongziye/article/details/83690940
5、
6、instanceof的用法
参考文章链接:https://www.cnblogs.com/bkyshichao/p/7090401.html
二、第二套
文章链接:https://blog.youkuaiyun.com/nkym61/article/details/94494371?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-8&spm=1001.2101.3001.4242
三、第三套
文章链接:https://ac.nowcoder.com/discuss/151226?type=2
选择
1、一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是( )
A、EDCBA
B、DECBA
C、DCEAB
D、ABCDE
- C
2、下列TCP连接建立过程描述正确的是:( )
A、服务端收到客户端的SYN包后等待2*ml时间后就会进入SYN_SENT状态
B、服务端收到客户端的ACK包后会进入SYN_RCVD状态
C、当客户端处于ESTABLISHED状态时,服务端可能仍然处于SYN_RCVD状态
D、服务端未收到客户端确认包,等待2*ml时间后会直接关闭连接
- C
解释参考链接:https://www.nowcoder.com/questionTerminal/2d5a65326a4c43ffa87ca7bf5ad1a632?toCommentId=129342
3、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是?
A、1:1联系
B、m:1联系
C、1:m联系
D、m:n联系
- C
4、一个无序整数数组长度为N(N>100),要判断M个不同的整数是否在数组里,当M大于
A、>0
B、>2
C、>2log2N
D、>2N
5、设有n个无序的元素,希望用最快的速度挑选出其中前50个最大的元素,请选择最好的排序法
A、冒泡排序
B、基数排序
C、堆排序
D、快速排序
- C
- 堆排序算法中,数组最大的元素位于堆顶处,在输出堆项的最大值之后,使得剩余n-1个元素的序列又建成一个堆,则得到n个元素中的次大值。如此反复执行50次,便能得到前50个最大的元素。和其他的相比堆排序只执行了50次,其他的在最坏的情况下都要遍历,所以C。
6、若某表最常用的操作是在最后一个节点之后插入一个节点,则采用( )存储方式最节省运算时间。
A、单链表
B、双链表
C、单循环链表
D、带头节点的双循环链表
- C
7、N的阶乘后面有多少个0?6的阶乘=12345*6=720,720后面有一个0.现在给出一个数N=10000,求N!后面有几个0?
A、2498
B、2499
C、2450
D、2451
-
B
-
10可以被5整除
10000/5=2000
2000/5=400
400/5=80
80/5=16
16/5=3余1
所以n=2000+400+80+16+3=2499
8、一个无序整数数组长度为N(N>10000),其中整数皆在0到100之间。从小到大打印数组里的数,所需的最小时间复杂度为?
A、O(C)
B、O(N)
C、O(Nlog2N)
D、O(N^2)
- c
填空
1、2的64次方,它的个位数是
6
2、一个长度为100的循环链表,指针A和指针B都指向了链表中的同一个节点,A以步长为1向前移动,B以步长为3向前移动,一共需要同时移动多少步A和B才能再次指向同一个节点 。
50
3、设int a=3,b=8;在不用临时变量情况下,交换两个数的值。
参考文章:https://www.cnblogs.com/tk091/archive/2012/07/13/2590938.html
4、通常情况下,插入排序、快速排序、堆排序的时间复杂度分别是多少?
二分法插入排序 复杂度 O(nlogn)
快速排序 O(nlogn) 有可能退化
归并排序 O(nlogn) 比较快
堆排序 O(nlogn)最稳定的
5、深度优先搜索一般使用栈结构,广度优先搜索一般使用队列结构。
6、设有一稀疏图G,则G采用邻接表存储较省空间;设有一稠密图G,则G采用领接矩阵存储较省空间。
7、某通信码中只会出现8种字符,其概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,若对其进行赫夫曼编码,其赫夫曼树的高度为 。
8、设线性表长度为N,使用冒泡排序,在最坏的情况下比较次数为n(n-1)/2
9、已知有一个关键字数列:(27,23,34,14,1,55,20,19,85,10,68)散列存储在一个哈希表中,若散列函数为H(key)=key%7,并采用链地址法来解决冲突,则在等概率情况下查找成功的平均查找长度为 (精确到小数点后两位即可)
简答题
1、请将以下短文翻译成中文:
Because static data members are not part of individual objects of the class type,they are not defined when we create objects of the class.As a result,they are not initialized by the class’constructors.Moreover,in general,we may not initialize a static member inside the class.Instead,we must define and initialize each static data member outside the class body.Like any other object,a static data member may be defined only once.
元素路径:
2、什么是进程(Process)和线程(Thread)?有何区别?
3、数据库中有一张如下所示的表,表名为sales。表中数据如下表1:
要求:写一个SQL语句查询出如下表2所示的结果。
https://my.oschina.net/lhrbest/blog/4631881
4、DNS服务在网络中有什么作用和功能?
DNS 服务器的功能是把域名解析为IP地址。
编程
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
class Solution {
public int findRepeatNumber(int[] nums) {
for(int i = 0; i < nums.length; i++){
for(int j = i+1; j < nums.length; j++){
if(nums[i] == nums[j]){
return nums[i];
}
}
}
return -1;
}
}
四、第四套
文章链接:https://blog.youkuaiyun.com/qq_39026548/article/details/88070860?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&dist_request_id=1328641.52619.16157946942668379&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control
选择
1、快速排序算法(排序算法出了好几道题)
https://blog.youkuaiyun.com/elma_tww/article/details/86164674
2、最坏的情况下,冒泡排序,归并排序,快速排序,希尔排序哪种排序算法时间复杂度
https://www.cnblogs.com/lungeer/articles/2446990.html
填空
1、数据库事务及其特性
2、死锁产生的条件,如何预防死锁
3、UDP用户数据报的字段为6612b,能划分为几个数据报片,以及每个数据报片的数据字段长度和偏移字段
编程
有n个样品,第i个样品的权重对应i,权重大的个体被抽到的概率大,权重小的个体被抽到的概率小,现在要求按比重从中随机选取一个样品。(需要叙述算法思想)
五、第五套
https://blog.youkuaiyun.com/nkym61/article/details/94494371?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-8&spm=1001.2101.3001.4242
六、第六套
https://blog.youkuaiyun.com/qq_42980244/article/details/100586069?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328641.52619.16157946942668379&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control