面经合计

2. 实习内容拷打(实习时候负责的系统架构,qps,pv,稳定性,性能优化和线上事故处理)

3. goroutine内存泄漏的情况?如何避免

4. 讲一下协程和线程的区别?从多个角度说明,讲一下golang协程是如何调度的,和java线程的区别

5. slice和array的区别,讲一下底层的结构

6. channel的用途和使用上要注意的点,底层的结构是怎样的

7. orm框架的优缺点

8. 操作系统内核态和用户态的区别,何时进入内核态or用户态

9. tcp和udp的区别,他们的报头结构,tcp的三次握手和四次握手的中间状态有哪些

10. https中的TLS/SSL层是用来干什么的,讲一下根证书和证书链和https握手的流程

11. 常见的攻击手法有哪些,讲一下中间人攻击和跨域攻击的原理,跨域攻击主要是利用了浏览器的什么机制

全部评论

相关推荐

去年的存货面试公司:字节【基架部门】面试岗位:后端开发面试问题: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道真题和解析 软件开发笔面经
点赞 评论 收藏
分享
03-10 16:00
腾讯_HR
#腾讯#腾讯后台开发面经-暑期实习基本情况面试全程拷打了1.5个小时,基本网络、数据库、缓存、消息队列、算法都问到了。问题范围广,整体难度算适中,重点考察的是基础知识和实际问题的解决能力。* 网络:HTTPS原理、TCP粘包/拆包。* 编程语言:Golang协程、Context实现原理。* 消息队列:Kafka消息重复消费、消费者组管理。* 数据库:MySQL底层数据结构、慢查询优化、吞吐量提升。* 缓存:Redis vs 本地缓存、缓存一致性、本地缓存固定实例访问。* 项目经验:Job调度优化、导出性能优化。* 算法:回文链表。问题记录1. 自我介绍* 简洁明了,突出技术栈和项目经验。2. HTTPS的原理* HTTPS = HTTP + SSL/TLS,通过非对称加密交换对称密钥,后续通信使用对称加密。* 面试官可能会追问:为什么需要非对称加密?(因为对称加密的密钥传输不安全balabala)3. TCP的粘包、拆包* 粘包:TCP是字节流协议,消息边界不清晰,多个消息可能粘在一起。* 拆包:一个消息可能被拆成多个包传输。* 解决方法:固定长度、分隔符、消息头声明长度等等。4. Golang协程* 协程优势:轻量级、上下文切换快、由用户态调度。* 对比线程:协程更高效,适合高并发场景。5. Context实现原理* Context用于控制Goroutine的生命周期,传递请求范围的值。* 实现原理:通过树形结构管理Goroutine的取消信号和超时控制。6. Kafka消息重复消费* 原因:消费者提交offset失败、分区重平衡、消费者重启。* 解决方法:幂等消费、事务消息、去重表。7. 消费者组管理* 多个消费者在一个消费组中,Kafka会将分区分配给消费者。* 避免重复消费:确保每个分区只被一个消费者消费。8. 延迟调用API* 使用消息队列(如RabbitMQ的延迟队列)或定时任务(如Cron)实现。9. MySQL底层数据结构* InnoDB:B+树索引,支持事务、行级锁、外键。* 优势:查询效率高,支持高并发。10. 慢查询优化* 方法:加索引、优化SQL、分库分表、缓存热点数据。11. Redis vs 本地缓存* Redis:分布式缓存,数据共享,适合大规模系统。* 本地缓存:速度快,但数据不共享,适合单机场景。12. 本地缓存固定实例访问* 使用一致性哈希或固定路由策略,确保请求总是访问同一个实例。13. 缓存和数据库一致性* 方法:先更新数据库,再删除缓存(Cache Aside Pattern)或延迟双删,能分析出各自的优缺点更好。14. MySQL提升吞吐量* 方法:读写分离、分库分表、优化索引、使用连接池。15. Job调度优化* 通过调整调度策略(如优先级调度、批量处理)提升系统性能,和操作系统很相关。16. 导出性能优化,如何从30分钟优化到3分钟* 并行处理。* 减少数据库查询次数。* 使用缓存* 流式导出等等。17. 流式导出什么意思* 边查询边导出,减少内存占用,提升响应速度。18. 算法题:回文链表* 思路:力扣原题,快慢指针找到中点,反转后半部分,比较前后两部分是否相同。* 实现:手写代码,注意下边界条件。内推链接:https://join.qq.com/resume.html?k=ANQI6RfQ3rhPS2dpyIkeSw评论区可以留下姓名缩写加岗位,方便后台查看是否内推成功#前端##技术##面经##后台开发##实习内推#
腾讯
|
实习
|
超多精选岗位
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务