【汉得java开发笔试回忆总结】

21届

hand

汉得的笔试题java基础考察不多,大多是多线程,锁,数据结构和算法,架构内容也有一些

总之自己这波答的很不好,所以想写记录一下(小题全凭记忆仅供参考)

1. 大概两道左右的选择题选项都是关于servlet:一个是生命周期内的方法,一个是filter,我就直接根据知识点来记录了

1.1 关于servlet生命周期与方法

  创建时,执行一次init方法;(对)

  提供服务:每次访问servlet时,service方法都会被调用一次(对)

  被销毁时:执行一次destroy方法(服务器正常关闭时,servlet被销毁,此时会执行)(对)

  servlet初始化后,通过service方法判断调用doGet或doPost方法处理请求(对)

  通过调用servlet的destroy方法直接回收资源(错)

  注意:destory方法只是表示servlet结束,并指明哪些资源可以被回收,资源的回收是由 JVM 的垃圾回收器进行垃圾回收的  

1.2 关于filter

  filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应;

  filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应;

  (所以说filter其实可以理解为套在servlet外的一层过滤网)

  在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;

  根据程序需要修改请求和响应;

  在servlet被调用之后截获servlet的执行

  filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应。(对)

  filter是servlet(胡言乱语。。)(错)

2.关于数据库给某用户授予select和insert权限语句是:

grant select,insert on dbname.employee to joe@10.163.225.87 identified by '123';//dbname是数据库名,employee是表名,用户是joe@10.163.225.87,123是口令

3.关于多线程与锁

  关键字synchronized:同步锁(也叫互斥锁)

  进程互斥的原因: 因为互相竞争资源而发生了制约关系.,反正就是线程独占资源问题,和同步正好相反,(有个选项是死锁,我好像还选了,真的日了自己了,这个选项应该是说反了,发生死锁的一个条件就是互斥条件)

4.一个单链表如何判断是否存在环

方法一:穷举遍历,如果发现某个节点开始出现两次就存在环

方法二:哈希表(hashSet)缓存,

方法三:把节点都放进set集合:可以用 set 遍历链表,把节点放入set里,每次访问下个节点时,如果set长度不变,则跳出,说明有环。否则set长度+1,继续遍历。

方法四:快慢指针:对于单链表来说,我们就可以用两个指针,一个快指针,一个慢指针,从起点出发,快指针如果在出发后追上了慢指针,那就说明单链表是存在环的


所以判断一个单向链表中是否存在环的最佳方法是()

  • A两重遍历
  • B快慢指针
  • C路径记录
  • D哈希表辅助

这题应该选快慢指针  https://blog.csdn.net/weixin_36795183/article/details/93890489

5.关于 springboot配置文件同名的话生效路径优先级

如果在不同的目录中存在多个配置文件,它的读取顺序是:

        config/application.properties(项目根目录中config目录下),maven管理的话就是这个config文件夹和pom.xml一个层级

          application.properties(直接放项目根目录下),和pom.xml一个层次

          resources/config/application.properties(放在项目resources目录中config目录下)

          resources/application.properties(项目的resources目录下)

     另外如果名字相同的话默认是properties后缀比yaml优先读取,如果同一个配置属性,在多个配置文件都配置了,默认使用第1次读取到的,后面读取的不覆盖前面读取到的。

6.有序不重复集合:LinkedHashSet

7.thymeleaf中th:include,th:replace等标签区别

剩下的忘了,大题后续更

最后是编程题两道(居然都是贪心算法):

1.加油站问题

这类问题力扣有,不赘述了,链接见下

https://leetcode-cn.com/problems/gas-station/

2. 0-1背包问题

大概就是说餐厅送外卖,H小时内必须送达,餐盒大小不固定,每一小时都要按照体积大小分配在外卖员的外卖箱中,每一小时能送完一趟回餐厅继续装,返回能在H小时内送完外卖的最低运载能力。

size[i]为第i个餐盒体积大小


输入描述
size=[1,2,3,4,5,6,7,8,9,10],H=3

要想在三小时内送完,则箱子的容积最小为21,具体如下:

第一小时:1,2,3,4,5,6

第二小时:7,8

第三小时:9,10

输出描述
21

原文地址:https://www.cnblogs.com/dabuliu/p/14552049.html