当前位置:   article > 正文

双非二本找实习前的准备day10

双非二本找实习前的准备day10

学习目标:

每天2-3到简单sql(刷完即止),每天复习代码随想录上的题目2-3道算法(时间充足可以继续),背诵的八股的问题也在这里记录了

今日碎碎念:

1)上个杭州的中厂拖了我一周,然后鸽了,一直推流程都不见人,哎,但是还好,没offer之前都是一直投

2)昨天内推线下面的名创优品,给拷打了,什么都答不上来QAQ,给压力烂了,后面朋友说是面试官问题准备得狠了点。


力扣刷题

SQL

力扣1527:1527. 患某种疾病的患者

解答思路:

        1)学习了正则表达式的使用

用正则表达式来匹配这2种情况就行

位于第一个时,用 ^ 匹配输入字符串的开始位置,即^DIAB1
不是第一个时,又符合前缀所以它属于代码后段的首位,即前面有空格与代码首段隔开,用 \s 匹配一个被视为白空格的空格或字符;
但要注意的是:多数正则表达式实现使用单个反斜杠转义特殊字符,一遍能使用这些字符本身,但是MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释另一个),所以是\sDIAB1

然后这2种情况只要满足一种即可,所以用 |
| 管道符号用于指定匹配字符串时要使用的替代模式;在由竖线分隔的一行模式中,竖线被解释为OR,匹配过程从最左侧的模式开始,在找到第一个匹配项时停止

作者:兔子队列.汤
链接:https://leetcode.cn/problems/patients-with-a-condition/solutions/2166550/mysqlzheng-ze-biao-da-shi-jian-dan-yun-y-pfwq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  1. SELECT
  2. *
  3. FROM
  4. PATIENTS
  5. WHERE
  6. CONDITIONS REGEXP '^DIAB1|\\sDIAB1';

 力扣1517:1517. 查找拥有有效邮箱的用户

解答思路:

        1)值得注意的是'.'这个字符需要\\来转义

^ 表示以后面的字符为开头
[] 表示括号内任意字符
- 表示连续
* 表示重复前面任意字符任意次数
\ 用来转义后面的特殊字符,以表示字符原本的样子,而不是将其作为特殊字符使用
$ 表示以前面的字符为结尾

作者:LiLi
链接:https://leetcode.cn/problems/find-users-with-valid-e-mails/solutions/514914/xue-xi-liao-zheng-ze-biao-da-shi-yao-yon-hl2c/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  1. select * from users
  2. where
  3. mail REGEXP '^[a-zA-Z][a-zA-Z0-9\_\\.\-]*@leetcode\\.com$'


力扣1484:1484. 按日期分组销售产品

解答思路:

        1)这块思路上其实不难,主要是学到函数的使用以及关键字的使用,group_concat组内结果进行拼接,separator 字符,使用指定字符进行分隔

  1. select
  2. sell_date,
  3. count(distinct product) as num_sold,
  4. group_concat(
  5. distinct product
  6. order by product asc
  7. separator ','
  8. )as products
  9. from Activities
  10. group by sell_date
  11. order by sell_date


力扣176:176. 第二高的薪水

解答思路:

        1)这块思路上其实不难,利用limit就可以查询出第几第几,然后使用ifnull函数来判断,如果为空就输出空

  1. select
  2. ifnull(
  3. (select
  4. distinct salary
  5. from Employee
  6. order by salary desc
  7. limit 1,1
  8. ),null
  9. ) as SecondHighestSalary

算法

力扣15:15. 三数之和

解答思路:

        1)复习这道题,思路更加清晰了,主要想明白去重,如何去重就好解决了

  1. class Solution {
  2. public List<List<Integer>> threeSum(int[] nums) {
  3. List<List<Integer>> res = new ArrayList<>();
  4. //题目只是要求我们输出三元组,因此可以对数组进行排序
  5. Arrays.sort(nums);
  6. int len = nums.length;
  7. //遍历
  8. for(int i = 0;i < len;i++){
  9. //因为题目要求三元组和为0
  10. //如果第一个就大于0
  11. //那么后面一定不存在符合的三元组
  12. if(nums[i] > 0){
  13. return res;
  14. }
  15. //思考如何去重
  16. //比如:-1,-1,0,1这个数组,那么我们遍历到第二个的时候,组合为零的情况
  17. //只有-1,0,1,跟遍历第一个-1的情况是一致的
  18. //因此我们要去重的时候,是跟前一个比对
  19. if(i > 0 && nums[i] == nums[i-1]){
  20. continue;
  21. }
  22. //寻找另外两个
  23. int left = i + 1;
  24. int right = len - 1;
  25. while(left < right){
  26. int sum = nums[i] + nums[left] + nums[right];
  27. //如果sum此时已经大于了0,说明我们的right需要往后移动
  28. if(sum > 0){
  29. right--;
  30. }
  31. //left同理
  32. else if(sum < 0){
  33. left++;
  34. }
  35. //统计所有的三元组
  36. else{
  37. //先将本次的加入集合
  38. res.add(Arrays.asList(nums[i],nums[left],nums[right]));
  39. //也要去重,逻辑和前面去重逻辑一样的
  40. while(right > left && nums[right-1] == nums[right]){
  41. right--;
  42. }
  43. while(right > left && nums[left+1] == nums[left]){
  44. left++;
  45. }
  46. //继续移动指针,进入下一轮比较
  47. right--;
  48. left++;
  49. }
  50. }
  51. }
  52. return res;
  53. }
  54. }

力扣18:18. 四数之和

解答思路:

        1)和三数之和一样的其实,就是外面多加了一层,主要想明白去重,如何去重就好解决了

  1. class Solution {
  2. public List<List<Integer>> fourSum(int[] nums, int target) {
  3. List<List<Integer>> res = new ArrayList<>();
  4. //和三数之和是一样的道理,再套一层
  5. int len = nums.length;
  6. //排序,因为不在乎顺序
  7. Arrays.sort(nums);
  8. for(int i = 0;i < len;i++){
  9. //剪枝
  10. //如果nums[i]已经大于target,并且是非负数的话,后面怎么加都无法凑成target
  11. if(nums[i] > 0 && nums[i] > target){
  12. break;
  13. }
  14. //去重
  15. if(i > 0 && nums[i] == nums[i-1]){
  16. continue;
  17. }
  18. for(int j = i + 1;j < len;j++){
  19. //一样剪枝
  20. if(nums[i] + nums[j] > 0 && nums[i] + nums[j] > target){
  21. break;
  22. }
  23. //同理去重
  24. if(j > i+1 && nums[j] == nums[j-1]){
  25. continue;
  26. }
  27. int left = j + 1;
  28. int right = len - 1;
  29. while(right > left){
  30. long sum = (long) nums[i] + nums[j] + nums[left] + nums[right];
  31. if (sum > target) {
  32. right--;
  33. } else if (sum < target) {
  34. left++;
  35. } else {
  36. res.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));
  37. // 对nums[left]和nums[right]去重
  38. while (right > left && nums[right] == nums[right - 1]) right--;
  39. while (right > left && nums[left] == nums[left + 1]) left++;
  40. left++;
  41. right--;
  42. }
  43. }
  44. }
  45. }
  46. return res;
  47. }
  48. }

八股

今天是一家中厂的二面,有几个点没答出来,但是oc了

ArrayList和LinkedList

讲讲HashMap

垃圾回收机制

线程安全

项目背景

执行流程

项目难点

说说redis的缓存击穿,穿透,雪崩

对mysql的了解咋样?

存储过程了解吗

讲讲对事务这块的了解

如何解决可重复读的?

对spring这块了解吗,平时用不用spring的?

IOC和AOP

讲讲依赖注入底层怎么实现的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/397839
推荐阅读
相关标签
  

闽ICP备14008679号