mq问的很频繁吧 还是准备一下比较好 简单的准备一些常问的 一天就搞定了
5 2

相关推荐

其实无论是什么岗,实习一定是重中之重,那么怎么才能找到大厂实习呢?[语言方面]首先,大厂后端岗主要集中在java go python php这些语言中,请注意c cpp rust这几个语言属于大厂鸡架,游戏引擎,游戏客户端的招聘大岗,如果你想要去传统意义上的互联网后端,不要头铁学个cpp去冲互联网后端,大概率只会被鸡架部门等捞起来。在大厂后端青睐的java go python php这些语言中,有该如何选择呢?根据笔者三段大厂实习的经验,语言其实不重要,公司中的项目千奇百怪,什么语言的项目都有,你大概率都会接触到,笔者也是这四种语言都写过。不过作为面试而言,笔者推荐你选择从java go python这三个中选择两个双修(php不必要单独学,比较小众其实)比如java➕go  java➕python go➕python这样子。[语言八股准备]可以从以下几个方面准备对应语言八股[java]java推荐看javaguide上的八股,常会被问的有 java中的collections的底层原理 java并发相关 jvm相关 垃圾回收相关 spring的相关八股[go]go的八股常见的有channel原理 map原理 sync.map原理 slice原理 gmp模型 go中的垃圾回收等[python]python中常见的八股有  python装饰品深拷贝浅拷贝等不过从笔者的面试经验来看,语言八股不是很重要,大厂面试官不太关注你到底什么语言,他更关注你的项目经历和你的基础知识,而且每一次面试会重点问你一个项目经历,所以准备一个好的项目至关重要。[项目经历相关]项目经历又该怎么准备呢?如果你有过实习,那么恭喜你这次面试有的讲了,讲你的实习就ok的,一般面试官再不感兴趣,也能讲个10分钟的。如果你没有实习,那么你准备一个烂大街项目也是ok的,但是你要把名字改成你在学校做的项目,并且你要对这个项目非常熟悉。[面试一般流程]笔者多次大厂面试经验来看,一面一般是15分钟项目介绍,15分钟基础知识拷打,30分钟做题这么个节奏。二面会加大项目比重,可能全程项目,或者项目➕场景设计➕少量基础知识基础知识中,语言八股一般问的少,更多的还是问mysql redis 消息队列 操作系统 网络相关的基础知识。[基础知识相关]mysql中,笔者最常被问到的有 索引相关 锁相关 事务相关 日志相关redis中,笔者最常被问的是 redis常见数据结构 redis持久化相关 缓存击穿 缓存穿透 缓存雪崩消息队列中,你从kafka rocketmq rabbitmq等挑一个你喜欢的,把他的原理看看即可网络中最常问http和https区别https中ssl加密过程tcp相关操作系统最常问死锁进程线程区别有的面试难的话可能问你epoll的一些东西[场景设计]场景设计一般没有固定答案,但是笔者的经验来看,可以从下面这几个方面来设计:1.数据库方面:考虑索引优化,分库分表,集群部署2.缓存方面:考虑持久化,使用特定的数据结构来优化缓存存储,设计相关方案保证数据库和缓存的数据一致性3.消息队列引入,解耦高流系统4.限流算法引入,防止流量高负载一般来说,你从这四个方面和面试官扯,30分钟肯定扯下来了,面试也不需要说太细,考虑这些已经绰绰有余了。[总结]实习的过程,就是一个滚雪球的过程,如果一开始找大厂屡屡碰壁,不妨先找个中小厂,你会发现,有一段实习之后再找,会容易好多。#牛客激励计划# #牛客AI配图神器#
点赞 评论 收藏
分享
去年的存货面试公司:字节【基架部门】面试岗位:后端开发面试问题:1.实习项目2.有哪些方案可以避免流量高峰造成的问题- 消息队列削峰填谷- 缓存预热- 负载均衡,分散请求- 限流和降级3.了解常用的限流或者降级的算法嘛?描述一下原理?固定窗口计数器:按照时间段划分窗口,有一次请求就+1,最为简单的算法,但是限流不够平滑且无法应对突然激增的流量。滑动窗口计数器:通过将窗口再细分,并且按照时间“滑动”来解决突破限制的问题,但是时间区间的精度越高,算法所需的空间容量就越大。漏桶:请求类似水滴,先放到桶里,服务的提供方则按照固定的速率从桶里面取出请求并执行。缺陷也很明显,当短时间内有大量的突发请求时,即便此时服务器没有任何负载,每个请求也都得在队列中等待一段时间才能被响应。令牌桶:往桶里面发放令牌,每个请求过来之后拿走一个令牌,然后只处理有令牌的请求。令牌桶满了则多余的令牌会直接丢弃。令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求,因此是目前使用较为广泛的一种限流算法。4.滑动窗口相对固定窗口算法解决了什么问题相比于固定窗口算法,滑动窗口计数器算法可以应对突然激增的流量。5.【手撕】字符串的z型变换6.操作系统,进程和线程的区别进程是操作系统资源分配的基本单位,线程是cpu调度的基本单位。进程是一个程序的动态运行实例,而线程是进程当中的一条执行流程。进程包含多个线程,线程从属于一个进程;各进程间相互独立,但线程不一定,同一个进程的多个线程可能相互影响。进程切换的开销显著高于线程切换。7.threadlocal的原理就是线程本地变量,如果创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了线程安全问题。ThreadLocal的底层数据建构就是ThreadLocalMap,它的key就是ThreadLocal的引用,值就是Object对象。8.用户的请求进来,用户的信息怎样在一个请求内传递?在web应用程序中,ThreadLocal可以用来存储当前请求的上下文信息,使得不同请求之间相互独立9.epoll?当调用epoll_create方法时,Linux内核会创建一个eventpoll结构体,用于存放通过epoll_ctl方法向epoll对象中添加进来的事件。这些事件都会挂载在红黑树中,如此,重复添加的事件就可以通过红黑树而高效的识别出来。而所有添加到epoll中的事件都会与设备(网卡)驱动程序建立回调关系,也就是说,当相应的事件发生时会调用这个回调方法,它会将发生的事件添加到rdlist双链表中。当调用epoll_wait检查是否有事件发生时,只需要检查eventpoll对象中的rdlist双链表中是否有epitem元素即可。如果rdlist不为空,则把发生的事件复制到用户态,同时将事件数量返回给用户。10.项目的代码结构是怎样的微服务架构,ddd11.流量是rpc进来还是http进来12.介绍一下rpc和http在使用场景上的区别rpc通常使用在分布式系统、跨语言调用、高性能服务中。http通常使用在网页浏览、RESTful API、文件下载等13.用rpc代替http会有什么问题???14.http底层连接可以基于连接池嘛15.了解golang嘛?了解golang的协程吗16.描述一下动态规划的核心思想?什么样的问题可以用它去解决?17.排序算法有哪些?挑选排序算法的时候要考量哪些?考量:时间复杂度、空间复杂度、稳定性、实现难度、数据规模和特性18.快排是稳定排序的算法嘛?哪些算法是稳定排序的?不是。稳定排序的算法:冒泡排序、插入排序和归并排序19.红黑树相对于普通的树有哪些特征?通常用来解决什么问题?20.mysql的事务隔离级别?21.读已提交和可重复读的底层区别?22.mysql有哪些日志?23.了解redolog吗?24.redolog的刷盘机制是怎样的?25.kafka和rocketmq在业务中使用场景上有什么区别?26.git中版本管理的模型是什么?Git 中的版本管理模型是围绕快照(snapshot)的概念构建的。每次提交(commit)都会记录一个当前所有文件的快照。快照包含了当时整个目录树的状态,包括文件内容和目录结构。27.git的常见操作28.git merge和rebase的区别`git merge` 合并后的历史记录保留了所有分支的历史,呈现出分叉后再合并的结构。`git rebase` 会将当前分支的提交按顺序应用到另一个分支的顶端,这相当于在另一个分支的基础上重新应用当前分支的更改。29.反问#软件开发笔面经##字节跳动#
查看28道真题和解析 软件开发笔面经
点赞 评论 收藏
分享
牛客网
牛客企业服务