1.题目来自牛客网真题 传送门
![](https://yqfile.alicdn.com/img_388fb64dd2bd0223f1775c4dd78fe132.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:Java只能直接继承自一个父类,即只支持单重继承,而可以实现多个接口。
2.![](https://yqfile.alicdn.com/img_a0bc94899bb145e7ea6f94aa24b95c67.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:
- Java创建线程有三种方式:
1.继承 Thread 类,重写 run() 方法;
2.实现 Runable 接口,重写 run() 方法;
3.使用Callable和Future接口创建线程。
参考:java 多线程总结(一) 创建线程的几种方法及对终止线程运行的讨论 - 线程间通信所使用的方法wait , notify , notifyAll 是Object类提供的方法:
- wait(): 将当前线程加入到等待队列中,等待其他线程调用notify或者notifyAll来唤醒。
- notify(): 唤醒在等待队列中等待的单个线程. 如果多个线程都是在等待队列中等待, 则随机唤醒一个.
- notifyAll(): 唤醒所有在等待队列中等待的所有线程。
关于第二个选项后续补充
3.![](https://yqfile.alicdn.com/img_63a5ba4ef784cd2944a5eb144f33d2ac.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:onSaveInstanceState()方法只有在activity异常终止(如:屏幕旋转)时才会调用。当Activity异常终止时,系统会调用onSaveInstanceState()方法来保存当前Activity的状态(调用发生在onStop() 之前);当Activity被重建之后,系统调用onRestoreInstanceState()方法来恢复Activity的状态(调用发生在onStart()之后)。
4.![](https://yqfile.alicdn.com/img_fec83a2057e12948c939d130f00791b8.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:Activity被强制关闭(即异常情况下),系统会自动调用onSaveInstanceState()方法和onRestoreInstanceState()方法,保存和恢复UI状态。
5.![](https://yqfile.alicdn.com/img_30ca4387c5d60dfba01f546c82914624.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:进程死锁:如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。
题目分析:要保证无论如何都不发生死锁,就要从极端情况考虑:当四个并发进程都占有了4个资源时,再加上一个资源,就能保证至少有一个进程可以获得5个资源,从而保证不会发生死锁。即:4*4+1=17个。
![](https://yqfile.alicdn.com/img_402cf66dbf36efee81ef896939a4a85e.png?x-oss-process=image/resize,w_1400/format,webp)
参考博客:tcp关闭状态详解
![](https://yqfile.alicdn.com/img_7f81d53df7e1de6785744d94196a2050.png?x-oss-process=image/resize,w_1400/format,webp)
![](https://yqfile.alicdn.com/img_b081fd074592a54dc18fb7b4054ce184.png?x-oss-process=image/resize,w_1400/format,webp)
题目分析:常规思路分析的话,可以从最后一个入栈元素入手,分以下情况讨论:
- 4××× 若最后一个元素第一个出栈,说明前面入栈的元素都没有出栈,所以只有一种出栈序列:4321。
- ×4×× 若最后一个元素第二个出栈,说明前面入栈的元素有两个没有出栈,并且其出栈顺序固定,所以有三种出栈序列:1432,2431,3421。
- ××4× 若最后一个元素第三个出栈,则其前面出栈的两个元素顺序不定,所以有6种出栈序列:1243,2143,1342,3142,2341,3241。
- ×××4 若最后一个元素最后出栈,即最后一个元素对前三个元素的入栈和出栈没有任何影响,那么就可以用这个思路对 123 这个序列进行分析,将3作为最后一个入栈的元素,依次类推。有三种出栈序列:3214,2314,1234,2134。
特别说明:题目满足卡特兰数,可用公式 计算。即
=
= 14。
![](https://yqfile.alicdn.com/img_88b276239aa1fc042737e5e7dc11c9b0.png?x-oss-process=image/resize,w_1400/format,webp)
答案有争论,后续整理更新
9.![](https://yqfile.alicdn.com/img_1442b71e79d263fcd74ab72a463d5f9e.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:^ 会匹配行或者字符串的起始位置;[^] 表示不接受该字符集合;
+ 表示重复1次及以上(1~n);
* 表示重复0次及以上(0~n);
? 表示重复0次或1次;
题目分析:^d表示以 d 开头,d+ 表示d重复至少一次,[^d] +表示任意不含d的字符串。
![](https://yqfile.alicdn.com/img_f936274a6151b043a47a60724675a4eb.png?x-oss-process=image/resize,w_1400/format,webp)
题目分析:第一次查找 (0+10)/2 = 5 下标为5的数:50<90;
第二次查找(6+10)/2=8 下标为8的数:90 。
![](https://yqfile.alicdn.com/img_b20a32b418d7dc0d78a61996e0bf7737.png?x-oss-process=image/resize,w_1400/format,webp)
题目分析:根据前序遍历(中左右)序列可知,A为根节点,接下来看中序遍历(左中右)序列,则DBGE为左子树,CHF为右子书;接下来,看左子树的前序遍历序列:BDEG,所以左子树的根节点为B,那么左子树的左孩子和右子树分别为D和GE;接着看右子书的前序遍历序列:CFH,所以右子书的根节点为C,那么右子树的右子树为FH;以此类推即可得该二叉树。
12.![](https://yqfile.alicdn.com/img_0f266721bb08805d630e0776a75643f3.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:FileInputStream和FileOutputStream可以对文件进行读写;BufferReader和BufferWriter带缓存,也可以对文件进行读写。
13.![](https://yqfile.alicdn.com/img_b3b422ca643072be304dcce0697b9580.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:Last-Modified 标示这个响应资源的最后修改时间。
Etag web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识。
![](https://yqfile.alicdn.com/img_e76602cf209ebff97e8fbaba079f42e7.png?x-oss-process=image/resize,w_1400/format,webp)
知识点: between 关键字是一个闭区间。
< | < |
---|---|
<= | <= |
> | > |
>= | >= |
![](https://yqfile.alicdn.com/img_a5477e3bae8fce7307084737a4c4e5a9.png?x-oss-process=image/resize,w_1400/format,webp)
![](https://yqfile.alicdn.com/img_bb1613f78499af4533a9eb1dff37e49b.png?x-oss-process=image/resize,w_1400/format,webp)
![](https://yqfile.alicdn.com/img_9cb34317100aa4be94753580097f7313.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:shell函数在调用时直接写函数名,不带括号。
参考博客:shell中函数的定义和使用
![](https://yqfile.alicdn.com/img_63277d3cb1f0346df9e7f2954c3e29fd.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:
awk用法:awk 'BEGIN{执行前语句}{每一行执行的语句}END{所有行执行完后执行的语句}'
实例:累加每行第一列数字
awk 'BEGIN{sum=0}{sum+=$1}END{print sum}'
也可以省略BEGIN
awk '{sum+=$1}END{print sum}'
![](https://yqfile.alicdn.com/img_eae0e7fd792cc9f3c15219a4fdcb8986.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:
- GET请求提交参数有长度限制,而POST没有长度限制;
- POST方式比GET安全,因为GET方式所发送的数据是URL的一部分,而POST参数不会被保存在浏览器历史或web服务器日志中。
![](https://yqfile.alicdn.com/img_eb957d6fa4d7262cead285728b74992d.png?x-oss-process=image/resize,w_1400/format,webp)
参考博客:Android事件拦截机制
20.![](https://yqfile.alicdn.com/img_5d4fd125e3d5970baa3c9ecd770b6647.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:常用的布局优化方式有:
- 使用include标签实现布局重用,例如自定义的ToolBar;
- 使用merge标签减少不必要的嵌套,用于除去没有background等属性的外层FrameLayout;
- ViewStub标签实现延迟加载。
推荐一篇博客:一些你需要知道的布局优化技巧
21.![](https://yqfile.alicdn.com/img_70cce2f32c6a499b37ee0dda62839d27.png?x-oss-process=image/resize,w_1400/format,webp)
参考博客:ANR问题总结
22.![](https://yqfile.alicdn.com/img_4f69c9829c0e32c4ccba5c7201a78d16.png?x-oss-process=image/resize,w_1400/format,webp)
知识点:
- TCP是面向连接的,而UDP是无连接的;
- TCP提供可靠的服务,UDP尽最大努力交付,即不保证可靠交付;
- TCP只支持点对点,UDP支持一对一、一对多、多对多的交互通信;
![](https://yqfile.alicdn.com/img_796171983fc013dd2c447a2b51f8fedf.png?x-oss-process=image/resize,w_1400/format,webp)
![](https://yqfile.alicdn.com/img_e75dfaab41d558a4e3d2b557d3a74ac9.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![](https://yqfile.alicdn.com/img_51a2302bb41564993a833107088a2ff4.png?x-oss-process=image/resize,w_1400/format,webp)
题目分析:
- C选项表示从表中查找有课程成绩大于80的学生姓名(不是所有课程成绩大于80);
- D选项表示查找最低分数大于80的学科(将 sub_name 改为 stu_name 即为正确)。
![](https://yqfile.alicdn.com/img_f50dab3dc07a65bdfaf3c643e56a7310.png?x-oss-process=image/resize,w_1400/format,webp)
![](https://yqfile.alicdn.com/img_49a5089d798dfb7ee2ddc5363d46473a.png?x-oss-process=image/resize,w_1400/format,webp)
题目分析:对于这个题,只需要知道静态块最先执行就可以得出答案。
测试博客:特地写了两个简单的类进行了测试