回馈牛油之暑期快手二战质量效能测开

快手(质量效能组)

## 快手一面(5.27)

1. 讲一下两个项目
  
  阿巴阿巴......
  
2. 讲一下你理解的redis和mysql
  
3. 为什么redis可以基于内存,如何保证数据不丢失?
  
  rdb或AOF?
  
4. Tcp和udp的区别是什么
  
5. 负载均衡原理
  
  想不起来,没好意思说,就提了几下负载均衡的算法
  
6. java中避免死锁的方法
  
  就说上来了个锁在Java中避免死锁是一个重要的编程任务,特别是在多线程编程中。以下是一些常用的方法来避免死锁:
  
  1. **避免嵌套锁**:
    尽量减少一个线程持有多个锁的情况。这样可以降低发生死锁的风险。
    
  2. **锁的顺序**:
    确保所有线程以相同的顺序获得锁。例如,如果线程A和线程B都需要锁L1和锁L2,那么确保它们总是先获取锁L1,再获取锁L2。这可以通过定义全局锁顺序来实现。
    
  3. **使用超时尝试获取锁**:
    使用`tryLock`方法代替`lock`方法,这样可以设定一个超时时间。如果无法在超时时间内获取锁,线程可以放弃获取锁,从而避免死锁。示例如下:
    
  4. **避免长时间持有锁**:
    锁的持有时间越长,发生死锁的可能性越大。因此,应尽量减少锁持有的时间,仅在需要的时候持有锁,并在完成后立即释放。
    
  5. **使用更高层次的锁管理机制**:
    使用Java并发包中的高级并发工具,例如`java.util.concurrent`包中的`Lock`, `ReentrantLock`, `ReadWriteLock`等,它们提供了更灵活的锁管理机制。
    
  6. **检测和预防死锁**:
    实现死锁检测机制,监视线程获取锁的状态,如果检测到死锁,采取适当的措施(例如中断相关线程)。一些工具和库可以帮助检测死锁,例如JConsole和VisualVM。
    
7. ```java
  //括号匹配
  //大喊我是傻逼
  import java.util.*;
  public class Main {
      public static void main(String[] args) {
          //String str = "niin"; // 不是真有傻逼这样写
          String str = "((())))";
          Deque stk = new LinkedList<>();
          for(char c : str.toCharArray()){
              if(c == '('){
                  stk.push(')');
              }else if(c == '{'){
                  stk.push('}');
              }else if(c == '['){
                  stk.push(']');
              }else if(stk.isEmpty() || stk.peek() != c){
                  break;
              }else{
                  stk.pop();
              }
          }
          boolean flag = stk.isEmpty();
          System.out.println(flag);
      }
  }
  ```
  
8. 大文件传输用udp还是tcp
  
9. ```sql
  --A一个表name,id,socre
  --B一个表id,major
  select A.name,B.major
  from A
  join B on A.id = B.id
  where A.score > 60
  ```
  
10. 反问: 部门,效能开发,偏向于开发是吧
  

> 快手的一面果然还是一如既往的高效且温柔,速度极快,就是我的水平太差了,但是!,她以为我是研究生,最后还挺不好意思的,最后没问什么就直接给我过了(38min)
#软件开发笔面经#
全部评论
投侧开过了真会去吗
点赞 回复 分享
发布于 09-07 20:10 广东
是商业化智能校验吗
点赞 回复 分享
发布于 09-11 17:58 湖南

相关推荐

5 12 评论
分享
牛客网
牛客企业服务