100天准备找工作:第二一天 (美团面试最后一天!!)
阿BIN 永远滴神!!
算法题:
1.字符串压缩:双指针
2.字符串转数字:需要考虑的条件多,过程不难
3.如何判断链表有环(快慢指针)
进阶:环的入口在哪:
4.如何判断链表相交:相交直接遍历,两个的尾节点应该是一样的;进阶判断相交入口:双指针,p1先走A再走B,p2先走B再走A,因为走的距离相同,会在入口处相遇,如果没有交点则会在尾部null相遇,返回p1即可;
5.组合总和:递归回溯,有个去重的操作比较麻烦,官方题解是通过将重复数字统计数量,递归过程中一次性处理一个数字的多种选择可能;(将次数结果放入一个List中便于一会取出使用)
面试题:
1.TCP如何保证可靠性传输:
1、停止等待协议:出现差错时超时重传,确认丢失或者迟到会重新发送
2、连续ARQ协议:利用发送窗口,位于发送窗口内的所有分组都可以连续发送出去,而不需要等待对方的确认。A每收到一个确认,就把发送窗口向前滑动一个分组的位置。B采用累积确认方式,对按序到达的最后一个分组发送确认,就表示到这个分组之前的所有分组都收到了。
2、连续ARQ协议:利用发送窗口,位于发送窗口内的所有分组都可以连续发送出去,而不需要等待对方的确认。A每收到一个确认,就把发送窗口向前滑动一个分组的位置。B采用累积确认方式,对按序到达的最后一个分组发送确认,就表示到这个分组之前的所有分组都收到了。
3、TCP会对失序数据进行重排序再交给应用层
2.悲观锁和乐观锁在Mysql中的使用:MySql的悲观锁就是打开事务,当启动事务时,如果事务中的sql语句涉及到索引并用索引进行了条件判断,那么会使用行级锁锁定所要修改的行,否则使用表锁锁住整张表。
语法:SELECT ... FOR UPDATE
MySql最经常使用的乐观锁时进行版本控制,也就是在数据库表中增加一列,记为version,当我们将数据读出时,将版本号一并读出,当数据进行更新时,会对这个版本号进行加1,当我们提交数据时,会判断数据库表中当前的version列值和当时读出的version是否相同,若相同说明没有进行更新的操作,不然,则取消这次的操作。
语法:SELECT ... FOR UPDATE
MySql最经常使用的乐观锁时进行版本控制,也就是在数据库表中增加一列,记为version,当我们将数据读出时,将版本号一并读出,当数据进行更新时,会对这个版本号进行加1,当我们提交数据时,会判断数据库表中当前的version列值和当时读出的version是否相同,若相同说明没有进行更新的操作,不然,则取消这次的操作。
3.Synchronized对静态方法加类锁,对实例方法加对象锁
新知识点:
SpringBoot开始学习咯,看那个教学视频好像很短的亚子,等后天面完试争取两三天学完!!
明天面试,很紧张,但是只能安慰自己当作一次历练,但是还是控制不住紧张啊,怎么办。。。
还有,有没有已经入职字节的JAVA岗大佬,指点指点我,怎样才能做到入职字节!!
