当前位置: 首页 > news >正文

腾讯一面+二面总结

前言

博主的腾讯一面总结

Java面C++岗:项目、操作系统、计网问的比较多

下面只是部分,面的有点久了,有些记不得了

1.项目

我的项目就不方便透露了,讲一点经验

1.1主要功能的数据库表的设计

这个非常重要,一定要吃透自己的项目的数据库表的关系,调理清楚,直接影响到你这个项目的真实性,这个问题没答好,基本就没了。

1.2 10分钟取消订单,那么我在9分59秒进行支付,如何保证一致性

这个问题非常经典,我的项目里面用的是RocketMQ实现

给订单设定状态:0未支付、1支付中、2已支付(存在redis,有效期20分钟)

在消费者收到取消订单的消息时,再判断是否是未支付状态:是(取消)并执行取消业务

1.3 给下一级审批人发短信,如何保证不会重复发短信(幂等+防宕机)

1.在发送给mq的时候,在redis存入下面图片(过期时间根据业务决定)

业务代码,仔细看下面的步骤


public void listen(String phone) {try{//1.判断幂等token是否消费过//1.1 value=0(未被消费、未发短信)//消费消息逻辑,发送短信后value=1,完成消费删除token//1.1 value=1(未被消费完成,但是已经发送短信)//这个情况对于的是消费到一半,消费者宕机,防止重复发消息,删除token//1.2 找不到token已经消费完成//2.发送ACK到mq}catch (Exception e){//异常逻辑,后续mq重发消息}}

2.数据库+事务实现(面试官的场景题)(他没解答方案)

我的思路其实和上面差不多(phone表(token、value))

但是回滚我认为不太好,大家可以留下自己的想法

1.4限流设计

令牌桶(将余票放到redis里面的set集合)只有抢到令牌才可以进行下一步操作

2操作系统

2.1进程、线程、协程

2.2 进程竞争态是如何解决的

下面的内容看完

2.3 死锁的条件

2.4 虚拟内存和物理内存如何映射

2.5 500mb内存的服务器如何运行需要1G内存的应用

3.计网

3.1 我们视频面试中用到了哪些协议

3.2 https四次握手过程

追问如何防范别人冒充

再追问为什么要有第三方的出现

如何确保第三方不被冒充(问道这里直接不会了导致二面挂了)

4.算法

4.1题目一

代码

import java.util.Scanner;public class Main {static boolean flag=false;public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();dfs(str,0,0);System.out.println(flag);}private static void dfs(String str,int index,int cnt){if(flag)return;if(index==str.length()){if(cnt==0){flag=true;}return;}if(cnt<0)return;if(str.charAt(index)=='('){dfs(str,index+1,cnt+1);}else if(str.charAt(index)==')'){dfs(str,index+1,cnt-1);}else{//1.(dfs(str,index+1,cnt+1);//2.dfs(str,index+1,cnt);//3.)dfs(str,index+1,cnt-1);}}
}

4.2题目二(求最长严格递增子序列,不必连续)

代码

public class Main {public static int maxLen=0;public static void main(String[] args) {int[] nums={10,9,2,5,3,7,101,18};dfs(nums,0,Integer.MIN_VALUE,0);System.out.println(maxLen);}private static void dfs(int[] nums,int index,int father,int len){if(index==nums.length){maxLen=Math.max(maxLen,len);return;}if(nums[index]>father){dfs(nums,index+1,nums[index],len+1);dfs(nums,index+1,father,len);}else{dfs(nums,index+1,father,len);}}
}

4.3比较compareVersion('1.1','1.2')版本号小-1,等0,大1

非常中的是"."不可以作为split分割符

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();String[] split = str.split("'");StringBuffer s1=new StringBuffer(split[1]);for (int i = 0; i < s1.length(); i++) {if (s1.charAt(i) == '.') {s1.setCharAt(i,',');}}StringBuffer s2=new StringBuffer(split[3]);for (int i = 0; i < s2.length(); i++) {if (s2.charAt(i) == '.') {s2.setCharAt(i,',');}}String ss1 = s1.toString();String ss2 = s2.toString();int[] num1 = Arrays.stream(ss1.split(",")).mapToInt(Integer::parseInt).toArray();int[] num2 = Arrays.stream(ss2.split(",")).mapToInt(Integer::parseInt).toArray();int flag=0;int i=0;while(i<num1.length&&i<num2.length){if(num1[i]>num2[i]){System.out.println(1);return;}else if(num1[i]<num2[i]){System.out.println(-1);return;}i++;}while(i<num1.length){if(num1[i]>0){flag=1;}i++;}while(i<num2.length){if(num2[i]>0){flag=-1;}i++;}System.out.println(flag);}
}

相关文章:

  • beanstalk一直被重新保留(reserved 状态)消息删除
  • 轴承表面缺陷检测数据集VOC+YOLO格式3945张3类别
  • 使用winRM远程访问Windows系统,并执行指定命令,或调用执行指定bat文件
  • 【jzxxoj编程:4420: 寻找自我3】2022-1-30
  • 嵌入式开发学习日志(linux系统编程--文件读写函数)Day24
  • spdlog高性能日志库
  • c语言刷题之实际问题
  • HTML页面渲染过程
  • VMD查看蛋白质-配体的分子动力学模拟轨迹
  • Oracle如何解决LATCH:CACHE BUFFERS CHAINS
  • 阿里云服务器Ubuntu的git clone失败问题解决方案
  • 什么是防抖和节流?有什么区别?如何实现?
  • 新闻媒体发稿:社会实践返家乡主题如何选择
  • jvm对象压缩
  • 【工具变量】地级市健康城市试点政策数据集(2007-2024年)
  • web基础
  • 系统架构设计(十五):质量效用树
  • unipp === 状态管理 Pinia 使用
  • Mermaid 使用快速入门
  • MinerU可视化界面程序部署(Windows环境)
  • 墨西哥海军帆船纽约撞桥事故已致2人死亡19人受伤
  • 上海这场有温度的“人才集市”,为更多人才搭建“暖心桥”
  • 见微知沪|科学既要勇攀高峰,又要放低身段
  • 61岁云浮市律师协会副会长谭炳光因突发疾病逝世
  • 辽宁援疆前指总指挥王敬华已任新疆塔城地委副书记
  • 孟夏韵评《无序的学科》丨误读与重构的文化漂流