mongodb关联查询入门,java架构师面试问题

本文介绍了高并发系统设计的关键点,包括常见的面试问题,如Java内存模型、TCP/IP、HTTPS、数据结构和算法。特别强调了对并发编程的理解,如线程同步和进程通信,并提供了生产者消费者模型的例子。此外,还涉及MongoDB、Redis、Kafka在面试中的讨论,以及Java多线程和计算机网络的基础知识。
摘要由CSDN通过智能技术生成

前言

高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。

在过往的面试中,如果候选人做过高并发的项目,我通常会让对方谈谈对于高并发的理解,但是能系统性地回答好此问题的人并不多,大概分成这样几类:

1、对数据化的指标没有概念:不清楚选择什么样的指标来衡量高并发系统?分不清并发量和QPS,甚至不知道自己系统的总用户量、活跃用户量,平峰和高峰时的QPS和TPS等关键数据。

2、设计了一些方案,但是细节掌握不透彻:讲不出该方案要关注的技术点和可能带来的副作用。比如读性能有瓶颈会引入缓存,但是忽视了缓存命中率、热点key、数据一致性等问题。

3、理解片面,把高并发设计等同于性能优化:大谈并发编程、多级缓存、异步化、水平扩容,却忽视高可用设计、服务治理和运维保障。

4、掌握大方案,却忽视最基本的东西:能讲清楚垂直分层、水平分区、缓存等大思路,却没意识去分析数据结构是否合理,算法是否高效,没想过从最根本的IO和计算两个维度去做细节优化。

8.15 一面 (60min)

  • 自我介绍,为什么投客户端
  • python和java有什么区别
  • java内存模型
  • gc讲讲
  • http https区别
  • cookie,session
  • https握手过程
  • 对称非对称加密算法?哪个效率高?
  • tcp握手要三次,挥手要几次,为什么
  • 进程和线程,描述一下
  • 进程通信方式
  • 线程同步方式
  • 写个生产者消费者模型,要求多线程环境下
  • 为什么要用synchronized?原理?效率?

算法:

  • 二叉树,打印所有根结点到叶节点路径和为k的路径。

反问

先别走,二面面试官马上来

8.15 二面 (40min):

  • 自我介绍,为什么投客户端
  • 讲讲在学校的科研项目
  • python和java最大的区别是什么,从你的使用感受说说
  • https(问过了)
  • 数字签名验证过程
  • 从输入一个url到页面展示出来的过程
  • tcp怎么保证可靠性
  • tcp报文序号怎么分配的
  • utf-8,utf-16是啥?有啥区别?为什么网络传输大部分用utf-8?
  • 内核态和用户态
  • 智能指针了解吗(不了解)

算法比较简单:

  • 二叉树,把每个节点的值反转,并输出所有节点和。

反问

8.20 三面 (60min):

  • 评价一下自己前两面的表现?
  • 为什么投客户端,听前面的同学说你觉得客户端简单?(不是不是,balabla)
  • 问项目,问得很细,每一步是怎么实现的,过程,如果不是自己亲手一步一步做绝对会露馅
  • 做项目时遇到了什么困难
  • redis用来做什么?效率怎么样?
  • 分布式锁都可以怎么实现?
  • 问点计算机基础吧(终于)
  • java代码从编写到运行的过程
  • 堆内存通过gc自动回收,栈内存怎么回收?
  • 栈溢出是什么?什么场景可能会出现栈溢出?
  • 问点网络吧,syn攻击了解吗?(以前刷博客看过一眼,只懂个皮毛,不过面试官很好,说如果不了解就不问这方面的内容了。我赶紧说不了解)
  • 那换个问题吧,输入url到页面展示的过程?(窃喜,问过了)
  • 然而并没有让我说完,DNS解析详细问了一下,然后路由转发详细问了一下,说看我这方面挺熟的,没必要再说了。

本来说要写一道算法,但是估计看时间差不多了,就没让我写,直接反问环节

其实准备字节跳动的面试还是需要着重准备基础部分(数据结构、算法、操作系统、计算机网络),另外对做算法题的要求很高,如果在看到题目的时候能直接给出这个题目的最优时空复杂度解法,面试官对你的评价会很高。

如果基础知识比较扎实了,可以看看网络上的面试经验,找找自己不会的知识点,查漏补缺。

也祝大家都能拿到心仪的offer!

Java 多线程学习手册

这个文档内容的整合有博文、书籍、面试题等,对于一些已经讲解得很简明的技术点进行了一个直接的引用;对于一些没有讲解清楚的知识点,用图片或者代码实践进行展示;对于那些争论较大的技术点,本文档在核对了巨多材料的情况下,从而得出的最佳答案。

该笔记分为三大模块:基础+原理+JDK工具,共二十个小节;从基础由浅入深,直击底层原理。

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

计算机网络顶级教程

HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。简单来说,如果你不懂HTTP协议,那就相当于是个只有“半桶水”的程序员。

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

算法与数据结构

该文档的内容全部选自 LeetCode 和牛客网的原题,你只要按照顺序刷题,保你一个月速成算法。 还在为动态规划系列问题发愁吗?书中给动态规划总结出了一套框架模板,还有整整一个章节教你如何套模板做题

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

Kafka实战笔记

关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图

image.png

  • Kafka入门
  • 为什么选择Kafka
  • Karka的安装、管理和配置

image.png

  • Kafka的集群
  • 第一个Kafka程序
  • image.png

afka的生产者

image.png

  • Kafka的消费者
  • 深入理解Kafka
  • 可靠的数据传递

image.png

image.png

  • Spring和Kalka的整合
  • Sprinboot和Kafka的整合
  • Kafka实战之削峰填谷
  • 数据管道和流式处理(了解即可)

image.png

  • Kafka实战之削峰填谷

image.png

ka实战之削峰填谷**

  • 数据管道和流式处理(了解即可)

[外链图片转存中…(img-0cD5q0nH-1650098107144)]

  • Kafka实战之削峰填谷

[外链图片转存中…(img-JUJWNWX0-1650098107144)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值