首页 / 软件开发2024笔面经
#

软件开发2024笔面经

#
2179694次浏览 46762人互动
哈喽春招的软开人,快来分享下你的笔试面试经验吧~无论是成功后的经验总结,还是失败后的反思,都值得被记录下来,也一定会帮助到更多小伙伴!
此刻你想和大家分享什么
热门 最新
阿里巴巴高德出行java/go实习
不是哥们这也能过?????居然约二面了????1.自我介绍2.mysql引擎了解吗3.你觉得不同引擎有什么区别?我们经常用innodb,innodb好好在哪里?我们一般什么时候不用innodb?4.mysql死锁了解吗?-5.自己建张表,写两个事务,写出死锁的例子。6.你觉得有个服务有2个接口,调用这两个事务,这会发生什么?业务层上监控的指标会有什么变化,能想到啥说啥?你觉得XX指标变化的量级会是多少?7.业务上一般怎么处理mysql死锁?8.现在有一个服务,有10个接口,其中2个高qps(1w)的接口分布调了上面的两个事务,其他8个接口(qps1k)也读这个库,那8个接口你觉得监控指标会发生什么变化?你觉得XX指标变化的量级会是多少?9.它在mysql底层是为什么呢?10.mysql一般我们用事务用什么隔离级别?11.可重复读和可串行化的区别是啥?12.它在mysql底层是为什么呢?换句话说可重复读的实现原理是什么?可串行化的实现原理是什么?是什么导致了它们的区别13.讲讲mysql下索引。14.聚簇索引底层和非聚簇索引底层是什么?15.现在我们有张表用uuid建表,有张表用自增id建表,1kw行记录,添加数据的效率谁更高?为什么?16.接着15的场景,我们建完表了,其他数据都一样,只是一张表是uuid作为主键,一张表是自增主键,谁的查询效率高?为什么?17.讲讲你对一般怎么排查慢查询sql。18.你提到了一个阈值,阈值一般怎么设置?慢查询优化阈值一般设定死的吗?19.你在other提到了临时表,你觉得临时表什么时候会出现?-20.自己建张表,写个sql,写出单表查询的场景下出行临时表的例子。21.你用过redis吗?你一般用redis干什么?22.redis的数据结构你了解多少?24.你如何利用redis实现个分布式锁?现成的可以讲讲原理?用原生的redis怎么做,讲讲加解锁的逻辑?25.为什么跳表时间复杂度是log(N)?-26.自己举个跳表的例子,来说明他平均查询复杂度是log(N),最好直接公式推导。27.redis里面我们经常提有大key和热key,你分别讲讲大key是啥,热key是啥?28.大key会导致什么,热key会导致什么29.你觉得有个服务有1个接口,调用这个redis的大key/热key,这会发生什么?业务层上监控的指标会有什么变化,能想到啥说啥?你觉得XX指标变化的量级会是多少?30.现在有一个服务,有10个接口,其中1个低qps(100)的接口调用了大key/热key,其他9个接口(qps1k)也读这个库,那8个接口你觉得监控指标会发生什么变化?你觉得XX指标变化的量级会是多少?31.redis支持持久化吗?32.AOF在文件里面存什么?RDB在文件里面存什么?33.你觉得AOFRDB混合持久化会丢数据吗?会在哪个范围丢数据,为什么?一个redis实例一般会丢失多少数据,这个数量级是多少?34.AOF持久化的时间有哪些?35.现在有个redis cluster,8个主,有个宕机了,缓存命中率会下降多少,为什么?36.你了解一致性哈希吗?37.一致性哈希的话,有个宕机了,缓存命中率会下降多少,为什么?38.一般一致性哈希中会提到一个虚拟节点,虚拟节点是用来干什么?39.加了虚拟节点的一致性哈希,有个宕机了,缓存命中率和不加虚拟节点一不一样,为什么?40.你一般用kakfa干什么41.kafka如何实现顺序消费?kafka本身内部实现讲讲?业务层有什么保证顺序的手段讲讲?42.现在有一个kafka,消息堆积了,你觉得为什么会消息堆积?业务层一般会怎么处理消息堆积问题?43.接着42,它消息堆积,我把它扩容了,原来20台机器我扩容成40台,但是消费者的tps没变,这是为什么呢?想想所有可能的原因,能讲多少是多少?44.kafka一个分区可以被多少一个消费者组内不同消费者消费吗?一个消费者可以同时消费多个topic吗?45.你讲讲对线程安全的理解吧。46.比如说现在有个concurrenthashmap,你不对他加锁就进行一些叠加操作,这个可能会有问题吗?为什么?47.你用过哪些锁?48.reentlock相比于syn在使用上有哪些更优秀的地方?49.reentlock底层原理展开讲讲。50.讲讲reentlock支持可重入锁特性的源码是怎么设计的?51.讲讲reentlock支持区分公平和非公平特性的源码是怎么设计的?52.由你设计一个动态线程池,你会怎么设计?53.java线程池过程?java线程池原理?54.threadlocal,怎么用?什么东西在栈上?什么东西在堆上?为什么设计成弱引用,不是容易内存泄漏吗?55.mybatis星号和井号有什么区别?-56.自己写个sql,能实现sql注入。#牛客在线求职答疑中心##实习,投递多份简历没人回复怎么办##阿里巴巴##我的实习求职记录##软件开发2024笔面经#
ybluea:哥们你触犯天条了吗,实习问五十多个问题
查看55道真题和解析
点赞 评论 收藏
分享
25后端秋招进度及碎碎念及分享
bg 末流211本(非北邮等211强校...) 非科班 滴滴京东快手字节蚂蚁五段实习业务: 广告领域1年半 电商库存风控低代码订单都了解过目前拿到的全是提前批的 基本都是ssp字节: 8.12 已发意向[第一批]腾讯: 8.23 已发意向[第一批]蚂蚁: 9.2 已经意向 bat齐了滴滴: 9.13 已发意向 新锐百度: 三面完口头oc小红书: 笔试完虾皮: 拒面携程: 拒面快手: 拒面b站: 笔试完泡 不面了美团: 简历挂京东: 简历挂淘天: 简历挂秋招结束!碎碎念:提前批12场技术面全过秋招今年没有了美团和快手的大力支援,感觉对很多朋友们都有一些寒气希望大家别放弃正式批又让我想到了自己的大一下的4月, BOSS投了100多家,所有大厂都投了, 毫无回音, 当时是真的有一种不该选择计算机的很难受的感觉, 身边的舍友也不是这个方向的开始嘲笑自己,还挺难过摆烂了玩了两周觉得其实找不到也没事的, 反正当初学计算机的目标就是20k的工作 从5月开始重新背八股, 重新改简历, 一切都从头再来, 又BOSS投了300多家, 终于有了京东滴滴的约面还是希望大家约面的 就珍惜每一次面试的机会, 没约面的 就继续加油就好啦~毕竟还有冰冰陪你正式批0约面呢人生的容错率向来很高,即使最后没进大厂又如何呢,进了又如何呢,看透打工人本质了只是一份工作而已,只是起点而已,我身边也有比我厉害很多的人,比我有钱很多的人,只要做到自己满意开心就够啦过好当下的每一天,天天开心点儿分享:最后给大家分享一点点改简历及聊业务的经验吧我们从一个电商秒杀例子开始说简历上描述: 用Redis+lua脚本解决了茅台酒抢购秒杀问题可以怎么优化呢?1.QPS预估可以写上, 毕竟QPS如果是10 还需要这个吗?2.秒杀还有什么方案呢?比如10000请求 我只有1000个库存 丢弃3000请求是不是也可以, 当然可以, 返回给用户重试就好(偷偷说:京东就会丢弃非京东会员的)3.如果Redis+lua脚本宕机了怎么办呢?是不是我们可以想到会打到数据库? 那就分库分表是不是我们可以想到降级限流? 那就选择限流访问数据库4.那么如果你是一个电商实习的同学你会想到什么呢?是不是有可能支付时间过长导致rpc超时支付失败? 我们可以尽量减少回调时延如果抢到了 不付钱怎么办?那我们可以减少订单可支付的时间,快速回流单子, 如果用户多次这样 我们以后就把它的请求黑名单丢弃掉(业务方案)业务上的问题还有好多好多, 比如如果真的超卖赔钱方案是什么,超卖的检测怎么做(减少损失)?那最后你用了lua脚本 是不是得考虑下lua脚本原理是打包redis命令呢?所以其实很多同学只不过没想到这些, 多想想就好啦,大家都是从不会过来的!技术的方案怎么解决这个问题?多看看中间件原理及使用!业务的方案怎么解决这个问题?多搜搜网上的业务方案对比!描述业务就是: 为什么用我现在的方案替代了原来的方案, 业务收益我从原来xxx变成现在xxx业务数据流 业务架构  自己的思考 就好啦~ 碎碎念和分享就到这里啦~ 希望大家秋招顺利!#秋招##字节##百度##腾讯##蚂蚁##滴滴##求职##软件开发2024笔面经# #软件开发投递记录#
点赞 评论 收藏
分享
10-10 11:06
已编辑
武汉理工大学 前端工程师
70场面试,复盘我遇到的有趣问题(四)
        今天分享一下美团和蔚来面试中遇到的一些问题。1.(蔚来二面)在forEach和map里面对遍历的值进行改变会影响原数组吗        认真背八股的同学肯定都记得,forEach不会返回新的数组,只是遍历每一项并做计算,map会返回新的数组,所以理所当然的想map不会改变原数组,forEach...会怎么样??想到这里就错了,这也是我当时的思路。        事实上这个问题跟上面那个八股完全没关系。试想一个函数,传递了参数进来并改变这个参数,会不会对原来数据进行改变呢?这个题是在靠这个,需要分类回答。        数组中数据为基本数据类型时,forEach和map都不会改变原数组;数据为引用数据类型时,map和forEach都会改变原数组。在使用 forEach 和 map 方法时,对引用类型元素的修改会直接反映在原始数组中。这是因为引用类型的元素实际上存储的是引用(内存地址),而非值本身。因此,通过引用可以访问和修改原始数组中的元素。而number,string,Boolean,null,undefined这些基本类型在栈内存中直接存储变量与值。2.(美团到家一面)为啥会出现箭头函数        这一个问题可以去b站渡一老师的小视频里看看。        肯定很多人跟我一样第一时间想到的是箭头函数和普通函数的区别,那为啥有这些区别,为啥要单独搞个箭头函数出来?难道只是为了简单吗。其实原因只有一个:消除函数的二义性。        在出现箭头函数之前,函数可以直接被调用,也可以被new当作构造函数使用,这就是函数的二义性。而这种二义性的存在是会给开发带来负担的,因为创建者并不知道未来函数的调用者是如何使用这个函数的,所以后来先在命名上做了规范:小写开头的函数是直接使用的,大写开头的是构造函数。但这种规范也不是强约束,毕竟既可以Number(),又可以new Number(),所以为了消除这种二义性,创造了箭头函数和class,箭头函数只能() => {},当作普通函数调用,而class只能被new,这就刚好对应二义性的两种用法,解决这种复杂情况了。————————10.10补充————————        感谢牛u的提示,这边还有一个点补充。        箭头函数的出现解决了this的复杂指向问题。        举例如图3所示,当调用show方法打印this.x的时候打印的是undefined。这是因为当代码执行到了setTimexout( )的时候,此时的this已经变成了window对象(setTimeout( )是window对象的方法),因此会在window上查找x,找不到,就输出undefined。        而如果是箭头函数,箭头函数的this是定义时就确定的,因此箭头函数的this指向的是obj,输出的就是obj.x。这样就解决了普通函数在当作回调函数传递的时候this变化带来的麻烦,否则就要用全局变量或者闭包之类的方法。3.(美团到家一面)obj对象中有一个方法,用obj.a()和(obj.a)()去调用分别输出什么(a方法中输出this.name,obj和全局都有一个name属性)?        这个题其实是当时考的一个输出题(图1)。下来尝试了一下,答案是没区别,都输出obj对象中的name。        这个题我一开始以为(obj.a)()这种调用就跟let b = obj.a,然后调用b()这种形式一样,但不是这样的,这个点可以记一下。        然后还要注意的一个点是,如果这个方法是箭头函数的形式(图2),那么this指向就不一样了,指向的是window。所以会在window上面去找name。那么这个时候输出什么?        是不是很多人脱口而出,“输出hong!”        恭喜各位掉到新坑了,这个时候输出是空(什么都没有:“”)        因为let和const定义的变量是不会挂到window对象身上的,如果改成var就能输出hong了,大家可以自行尝试一下、        (上面这个点个人认为还是很细的,一定要小心)                这几个是自己踩过的坑,第三点应该很多同学都会想错。        欢迎各位评论区交流~#24届软开秋招面试经验大赏##软件开发2024笔面经##美团##蔚来##前端#
点赞 评论 收藏
分享
头像
08-21 12:16
已编辑
华南理工大学 golang
字节抖音电商三面
体验不错,面试官全程笑嘻嘻的,有一种打工人互相交流的感觉,聊到了腾讯和字节的方方面面自我介绍1、让我说一说go语言。(没错,非常宽泛的问题,啥东西都没有,就让我说一说go语言,我实在无从谈起,就从Java和go的对比出发谈了一下。)2、谈一下go的并发模型,为什么是通信共享内存,而不是共享内存来通信3、GMP,具体是怎么调度的?4、协程和线程区别,协程的轻量级具体体现在哪里?5、mysql事务你了解多少?(又是一个非常宽泛的问题,谈了acid,具体谈当哪一个是怎么实现的,undolog原理,mvcc原理,事务的隔离级别以及不同隔离级别可能出现的问题,readview里面的各种id,readview如何解决不可重复读,如何解决幻读,当前读快照读,间隙锁,redolog原理,总结就是把小林coding mysql事务那一段结合业务聊了好几分钟)6、聊业务,实习项目,具体介绍(我一个人讲了好久,期间谈了一下腾讯的一些系统,面试官说的比较多的是啊,你们是这样的呀,我们字节巴拉巴拉)7、算法题:下一个最大的数,其实就是下一个排列,我一开始太rz,以为是找上一个比自己大的数,写成了单调栈,过来发现不对劲,第2次直接ac了。8、非科班是如何学习的,最后问我是不是25届的,反问业务,有什么建议,三面后还有技术面试吗?总结,很顺利的面试,因为都是开放问题,所以没有卡壳,算法题也是小插曲但是ac了,希望最后给个见hr姐姐的机会😃😃最后求个花花======================8.21更新   已约hr面 #软件开发投递记录# #软件开发笔面经# #软件开发2024笔面经#
查看11道真题和解析
点赞 评论 收藏
分享
03-22 20:22
复旦大学 Java
淘天一面
#软件开发2024笔面经# 八股集合,汗流浃背,但是确实学到了很多内容,是以前没有仔细看过的。目前记起来一些,后续想起来别的了再补充 #我的实习求职记录# 操作系统Linux平常使用吗线程和进程的区别,还有什么类似进程和线程的吗什么是协程CPU满了怎么看,怎么办Linux下rm正在写入的文件会发生什么?那么该如何在不使用kill的情况下删除该文件磁盘满了怎么看进程状态以及特殊两种状态僵尸线程和孤儿线程是什么清空进程时什么进程还存活?网络tcp三次握手四次挥手为什么不能两次握手如何解决tcp包的粘连udp和tcp的区别udp如何变得安全Java基础hashmap的底层hashmap.get之后会发生什么什么时候链表转红黑树什么时候红黑树降级jmmJvm区域及作用老年代常用垃圾处理算法多线程threadlocal有没有使用threadlocal底层是什么(哈希表)threadlocal底层哈希表的key是什么数据库两种引擎区别事务的原理数据库的四大特性如何保证隔离性隔离级别分别有哪些MVCC有什么用什么是死锁。如何解决sql数据库如何解决死锁sql锁Spring基础springboot运行原理bean如何加载,循环依赖?aop底层了解什么设计模式代理模式在spring哪里使用过单例模式在spring哪里使用过包装者模式在spring哪里使用过接口类代理和非接口类代理的区别中间件redis基本类型Redis缓存穿透,击穿,雪崩及解决方法,bitmap项目相关常见限流算法
点赞 评论 收藏
分享
70场面试,复盘我遇到的有趣问题(二)
         不知道这个系列可以更新多久,我预期是希望逐步整理所有的我认为有价值的问题,趁着还有时间,多复盘一下,大概每篇更新四五个问题,在精不在多。         如果大家觉得有用欢迎点赞收藏送花!1.(Minimax二面)react的单向数据流怎么理解,有什么好处?        当时对这个概念了解的不太深入,没回答好,下来复盘我觉得可以按照如下思路展开。        首先这个问题想回答好就需要理解几个概念:什么是数据流?什么是单向?为什么要设置成单向的?咱一个一个看看        react组件中最常用到的数据有两类:state和props,state是组件内部自行维护的,props是父组件传给子组件的,下面说的数据我理解都指的是props。        数据流:也就是数据在不同组件或节点之间的流动,比如a数据(引用类型)被b节点引用,又被b传递给c,那么a数据改变后会影响b,从而影响c,这就叫数据流。但是这种流动是双向的,因为如果在b或c修改了这个数据,其他的也会变化。        单向:在react中,单向是”自顶向下“的,也就是react规定了数据的流向是从外层组件向内层组件进行传递和更新的,而内层组件是无法直接修改props影响外层的。        那么为什么要用单向的形式?如果内层的组件可以通过修改props来修改外层的数据,那么外层使用到这个数据或者其他使用到这个数据的地方都会造成数据更新,UI渲染也会改变,这会造成数据紊乱和不可控。所以为了更好的可控性,react设计了单向数据流。        除此之外还有一个好处,所有的数据更新是单向的,那么出现问题的时候会更好溯源,因为修改数据的链路是确定的,排查起来顺着调用链就可以一层一层找到问题了。2.(快手二面)如果用户传了一个很大的excel要解析,如何处理比较好?web worker如何和主线程通信?        首先这个问题可以泛化到很多复杂计算上,而不只是excel解析,其次可以延申展开一些东西。‘        web worker是JS里难得的多线程。        在 HTML5 中,工作线程的出现使得在 Web 页面中进行多线程编程成为可能。众所周知,传统页面中(HTML5 之前)的 JavaScript 的运行都是以单线程的方式工作的,虽然有多种方式实现了对多线程的模拟(例如:JavaScript 中的 setinterval 方法,setTimeout 方法等),但是在本质上程序的运行仍然是由 JavaScript 引擎以单线程调度的方式进行的。在 HTML5 中引入的工作线程使得浏览器端的 JavaScript 引擎可以并发地执行 JavaScript 代码,从而实现了对浏览器端多线程编程的良好支持。HTML5 中的 Web Worker 可以分为两种不同线程类型,一个是专用线程 Dedicated Worker,一个是共享线程 Shared Worker。两种类型的线程各有不同的用途        和主线程之间的通信是通过postMessage来进行的。简单的说,主线程用postMessage向webworker推送消息,子线程用onMessage接受并处理,处理完之后在子线程内调用postMessage将结果返回给主线程,主线程同样用onMessage接受。具体内容请查阅MDN文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers3.(灵犀互娱一面)多个web worker如何保证顺序?        还好当时面试官只是提了一嘴,没让我解答。        这个问题属于上面的问题的延申版本,其实没了解过具体方式也能猜个七七八八(类比文件切片上传之类的)。要想保证顺序,最简单的方式就是在给不同web worker分配任务时附带上一个唯一编号,在web worker处理完返回结果时也将这个编号一起发回给主线程,在主线程中按顺序重组。        查了一下,webworker自身也提供了all和race等方法,这些其实就是在promise的基础上封装的(想来也正常,毕竟不同线程,肯定要异步返回)。有一个很详细的知乎文章,有兴趣的uu们自行查阅哈:https://zhuanlan.zhihu.com/p/41431253#:~:text=web-worker4.(快手二面)setInterval准确吗?        感觉大家可能也看过,但是这个问题还是比较有意思的。        答案是不准确,为啥呢?        嵌套的 setTimeout 相较于 setInterval 能够更精确地设置两次执行之间的延时。        下面来比较这两个代码片段。第一个使用的是 setInterval:        let i = 1;        setInterval(function() {          func(i++);        }, 100);        第二个使用的是嵌套的 setTimeout:        let i = 1;        setTimeout(function run() {        func(i++);          setTimeout(run, 100);        }, 100);        对 setInterval 而言,内部的调度程序会每间隔 100 毫秒执行一次 func(i++)(图1),时间开始计算的位置是调用内部方法的那一刻,因此第一次方法结束到第二次开始之间的时间间隔其实是小于100ms的,这就是为啥他不准确。        再看看setTimeout(图2)。时间开始计算的位置是内部方法调用结束的时刻,也就是说两次方法之间的时间间隔是准确的100ms。好处在于如果内部方法调用的耗时比较长,那么这个方法也能确保两次调用之间的时间间隔。        延申:如果setInterval的内部函数执行耗时大于设定的时间间隔咋办?        在这种情况下,JavaScript 引擎会等待 func 执行完成,然后检查调度程序,如果时间到了,则 立即 再次执行它。极端情况下,如果函数每次执行时间都超过 delay 设置的时间,那么每次调用之间将完全没有停顿。5.(百度一面)语义化标签如果没加样式,跟div、span这些非语义化标签有啥区别?        这个就看大家对语义化标签的理解了。首先肯定能想到的一点就是更方便理解,看到header就知道是顶,看到aside就知道是侧边栏,但是这些任务div都能完成,区别在哪?        1.即使在没有CSS的情况下,HTML页面也能呈现出很好地内容结构、代码结构。语义标签具有默认的CSS,比如html5之前的h1、h2等等就是语义化标签,他们表示几级标题;虽然我们在html没有引入任何css时,我们仍然可以看到h标签有字体放大加粗的效果。 实际上,html本身是没有表现的,我们看到例如 h1标签是粗体,字体大小2em,加粗;strong是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式,默认样式的目的也是为了更好的表达html的语义,可以说浏览器的默认样式和语义化的HTML结构是不可分割的        2.不仅人更容易看懂,也更利于机器看懂,对SEO更友好。再次感谢大家的点赞收藏和花花#软件开发2024笔面经##前端##快手##minimax##百度##面经#
点赞 评论 收藏
分享
头像
08-29 09:30
已编辑
小米集团_软件开发工程师
哈啰面经-已offer
1.你对Java的容器有什么了解?Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap、Hashset线程安全的list:CopyOnWriteArrayList2.Set和Map使用场景有什么差别Map是键值对,Set是值的集合,set可以用来判断元素是否出现,map可以记录元素出现的次数3.他们的底层实现你了解吗HashSet的底层实现是HashMap,数组+链表&红黑树4.他们底层确实有关联,你刚刚提到Hashcode,它在hashmap中的作用是什么?哈希码的作用是确定对象在hash表中的位置;任何类都有hashCode()方法5.你说一下hashmap底层的结构数组+链表+红黑树6.用hashcode怎么判断是否是有冲突的呢? hashCode() && equals()7.Hashcode的计算目标可能是对象,怎么判断是否相等(equals) 8.在长度大于多少的时候链表转为红黑树 89.删元素的话红色树是否会转回链表呢?会的10.hashmap如果发生线程不安全的情况会出什么问题?(这些问题出现在jdk1.7和1.8中)多线程put导致元素丢失put和get并发时,可能导致get为null,因为put导致扩容,此时线程get可能为空11.追问:还有其他问题吗?您用的是JDK什么版本?1.8,扩容的时候可能会出问题,链表删除的时候会出现问题12.你说一下hashmap的扩容过程?扩容有什么优化可以让他变得更快?HashMap是一种基于哈希表实现的键值对存储结构。在HashMap中,每个键值对都被映射到一个桶中,桶是哈希表的基本单位,多个键值对可能被映射到同一个桶中。在HashMap的内部实现中,当哈希表的元素个数超过了负载因子(load factor)与容量的乘积时,就会触发扩容操作。HashMap的扩容过程主要包括以下几个步骤:【1】创建一个新的哈希表,其容量是原来的两倍,同时重新计算每个键值对在新哈希表中的桶位置。【2】将原哈希表中的所有键值对重新分配到新哈希表的相应桶中。【3】将原哈希表的引用指向新哈希表,完成扩容操作。为了优化HashMap的扩容过程,可以考虑以下几点:使用位运算代替取模运算:在计算哈希值时,位运算比取模运算更快速,可以减少计算哈希值的时间,从而加速哈希表的插入和查询操作。假设哈希表的容量为n,计算哈希值时可以使用以下位运算:对于2的整数次幂n,可以使用按位与(&)运算代替取模运算。h&(n-1)对于任意正整数n,可以使用位移运算和按位与(&)运算代替取模运算。index = (h ^ (h >> 16)) & (n - 1)13.了解过多线程么?线程创建方式有哪几种?Extends thread,实现runnable,利用线程池14.如果打断线程?wait,join(等另一个线程执行结束才会往下执行),interrupt(中断)15.线程池的核心参数?16.线程池在什么情况下会触发拒绝策略?17.对数据库有多少了解?说一下事务的四大特性事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration),简称ACID【A】事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败【C】一个事务在执行之前和执行之后,数据库都必须处以一致性状态,比如A扣了钱,B就应该加钱【I】事务的隔离性是指在并发环境中,并发的事务是互相隔离的,一个事务的执行不能被其它事务干扰。【D】事务的持久性是指事务一旦提交后,数据库中的数据必须被永久的保存下来18.mysql的存储引擎InnoDB存储引擎--【事务安全】MyISAM---默认存储引擎19.有个sql执行的比较慢,你有哪些优化策略?Explain20.组合索引什么时候生效?(a,b,c)如果组合索引中的索引都在,则索引全部生效如果想要使用一个或者两个字段在where条件上,必须有组合索引里的第一个字段order by 只能使用a,才能用到索引21.有个表,(姓名,年龄,性别,),我想查性别为女的姓李的女性,怎么建索引?建索引是建在值比较分散的属性上的,比如性别,是不应该在这个属性上建索引的拓展:在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。22.我想查姓李的所有人的名字,select * from table和select name from table是一样的吗?回答要从聚簇性索引和非聚簇性索引方面考虑,把这个*的内容都返回,底层会做什么操作呢?总结问题:返回的时候返回所有列和单独返回一个列,对数据库底层来说有什么区别从聚簇索引的角度来看,如果表table已经按照name列进行了聚簇索引,则SELECT name FROM table WHERE name LIKE '李%'查询会更有效率。因为聚簇索引将数据物理上按照索引列的顺序进行排序,相同的值会被存储在相邻的位置,这样就可以更快地查找和扫描查询,因为它们可以减少I/O操作的次数。当我们执行SELECT name FROM table WHERE name LIKE '李%'时,由于只需要返回name列的值,聚簇索引可以更快地扫描满足条件的行,并返回结果。相比之下,SELECT * FROM table WHERE name LIKE '李%'则需要查找整个行,这意味着需要更多的I/O操作,从而可能降低效率。因此,从聚簇索引的角度来看,SELECT name FROM table WHERE name LIKE '李%'查询更有效率。23.如何保证redis和Caffeine数据是一致的?如果db更新成功,缓存更新失败怎么办24.如何保证本地缓存的一致性?#牛客解忧铺##面经# #秋招##牛客在线求职答疑中心#  #软件开发2024笔面经# #软件开发笔面经#
哈罗出行开奖10人在聊 查看24道真题和解析
点赞 评论 收藏
分享
瑞幸java校招二面(史诗级80min)
#软件开发2024笔面经#  一面(1h)已经顶不住 二面直接再送20min面到头皮发麻自我介绍 问会什么语言(java python)开始java基础:arraylist和linkedlist区别(秒了hashmap和concurrentHashmap区别(秒concurrentHashmap为什么线程安全(秒java多线程:多线程如何协同操作(秒饿汉模式懒汉模式区别(秒jvm:线上飙升cpu怎么排查(秒常见参数配置(秒设计模式:知道哪些设计模式(答了七个)抽象工厂和工厂方法区别(秒session token cookie区别(秒服务断开了session失效吗讲一下csrf攻击(秒tcp为什么三次握手不能两次四次(秒redis:redis缓存穿透(null值 布隆过滤器)布隆过滤器返回true or false更可信(false 一定不存在)场景题 一亿条数据 五万个前缀一样 怎么取 (keys info:* 或scan)mysql:介绍索引(秒内连接左连接区别(秒场景题 查询学生成绩大于90的 (用group by和having)负载均衡算法(两大种)负载均衡有哪几层(四层七层)nginx在哪一层(不会讲一下cap理论(三个特性)cap理论为什么不能三者共存(√)接口幂等性实现方案(数据库 jvm 分布式锁)dubbo:dubbo怎么感知服务下线(服务监控 心跳检测)dubbo用了什么通讯协议(不会瞎答)dubbo重试机制分布式 ID 介绍(秒雪花算法重复id问题分布式锁常见实现方案(秒算法java爬楼梯(秒)排序算法如何实现和时间复杂度了解什么消息队列kafka:kafka消息如何保证顺序(秒kafka消息回退处理(秒问简历实习(写的太多了不懂原理介绍实习 系统架构dubbo接口管理平台,公司elk有没有二次开发(没接触查询超时接口 链路分析traceIdselect for update实现,还有什么方式能确保加锁elasticSearch深分页(没答好websocket 基于什么协议 tcp 在nginx怎么配置(忘了charles抓包dubbo显示什么 k8s configmap作用(不会感觉面试官很强,也有引导,前面基础答得ok,后面实习的dubbo知识被拷打
QTY_01:面完狠狠点一杯星巴克
查看41道真题和解析
点赞 评论 收藏
分享
阿里巴巴一二面凉经
一面:1. 自我介绍2. 介绍一下实习做了什么  1. 项目背景是什么?  2. 离线任务做了什么?3. 场景题:一个天平,一个7g的砝码和一个2g的砝码,共140g沙土,要求将这些沙土分成90g和50g,一共要称多少次?  1. 你提到了需要4次,有3次的做法吗?4. 哈希表处理哈希冲突的方式有几种?5. 多进程模型和多线程模型有什么差异?  1. 切换的代价上有什么区别吗?6. 你了解哪些锁?他们分别有什么使用场景?7. 进程间有哪些通信方式?8. 讲讲协程?他的使用场景是什么?它和线程的区别是什么?9. 场景题:一个文件有1000w行数据,每行有100字节大小,要统计出其中出现频率最高的前1w行数据,应该怎么解决?  1. 如果内存不够怎么办?(分片,然后多机并行统计)10. 代码题:  1. 反转字符串中的单词  2. 反转链表中倒数k个结点11. 准备读研吗?(听口气面试官不希望读研)12. 对工作地点有什么倾向性的要求吗?二面:这B windows害死我,手撕的时候edge直接卡死了,导致重进很多次都失败,屮!!!1. 什么时候结束实习?2. 实习工作符合你的预期吗?3. 你们部门是做什么的?4. 有考虑转正吗?5. 为什么不读研?6. 有参加ACM比赛吗?7. 你想找什么样的工作?8. 你平常对什么技术感兴趣?开始智力题轰炸9. a和b摇骰子,1-2算a赢,3-5算b赢,投出6就重新摇,请问b获胜的概率是多少?10. 1块钱可以买到一个桃,3个桃核能换一个桃,给你10块钱,能吃到多少桃,还剩下什么?11. 一根木棒,折成三段,这三段组成三角形的概率是多少?(X)12. 如何用两个栈实现一个队列?13. 有一个无序的数组,有个数出现次数超过了一半,如何找到这个数?14. 找出数组里面的最大元素至少需要多少次比较?  1. 同时找最大数和最小数至少需要多少次比较?(X)15. 二维平面有n个点,找到斜率最大的这两个点(X)(只会暴力)16. 如何判断单向链表是否有环?  1. 如何快速找到环的入口17. 如何判断两个单向链表是否相交?手撕:每K个一组翻转链表#软件开发笔面经##软件开发2024笔面经##阿里##面经##面试#
查看13道真题和解析
点赞 评论 收藏
分享
10-11 13:18
已编辑
西安交通大学 C++
腾讯米哈游京东字节快手 timeline
#软件开发投递记录#  #软件开发2024笔面经# 腾讯光子1面:8.82面:8.133面:8.20hr面:9.2,9.3转评估,一直到现在泡着1面:实习问的多,然后一点基础八股,不记得了手撕:一个矩阵,每一行是有序的,求出整个矩阵的前k个小元素。2面:全方面拷打,从实习到项目,到基础知识,到场景题,无手撕。1. 设计一个王者荣耀moba游戏,如何保证客户端状态同步2. 网络丢包会造成什么问题,如何去解决3. 如果让你选择一个网络协议,针对你设计的游戏,如何选择4. tcp的话,对于游戏而言优缺点,你如何优化5. 分布式这块,共识协议,存储这块,LSM?3面:半小时结束,职业发展+实习经历。1道cpp不定项选择题,自己做错了。1道排列组合,从3个年龄段选4个人,有多少种选法,也做错了,唐完了。。米哈游8.17 笔试8.28 1面9.2    2面9.4    3面9.6    hrbp面9.13   oc+意向米的流程很快,都是第二天就下一场约面了,面试内容不能透露,就写个timeline吧京东9.13  技术一面(1面)9.19  技术二面(3面)京东流程比较搞,面试官都搞不清楚哪一面是干啥,叫我别在意。两次都以为hr面,一进去开始问技术,傻眼。技术1面:问的较为简单,实习内容简单问问。1. 指针和引用的区别2. 指针常量 常量指针手撕:lru 和 矩阵乘法技术2面:有难度,最后的手撕有点点难。手撕:给了个需求,当时其实也没有完全理解,一般一个报文经过一些算子处理,算子之间有依赖关系,非线性的,最后得到答案,说是自己写一个平台接口,尽可能用户友好,让用户用接口能够快速拿到答案,当然算子依赖关系也是用户定义,比较难,也没咋写完。还有一题,给一个数组有奇数有偶数,求得一个最长子数组,满足奇数个数偶数个数相等。字节国际电商9.11   1面9.19  2面9.23  3面1面:项目+实习,貌似发挥的挺好。然后手撕的时候说,咱们做点有挑战的,我说别呀哥,给点中等的就行,然后面试官笑着说,一眼没思路咱就换。手撕:lru-ttl,能写,但是他主动换了,说太长了。最长公共子串,我还没开始写,然后又给换了,最后写判断子树。 2面:问实习。手撕:k个一组反转链表+两个数组中位数10.10 update : 字节hr面挂快手1面  9.202面  9.271面:面试官内存问了快半小时,问我理解。深入问的比较多。问我是不是看过linux源码,我说没太难了,他说你可以去看看,你的理解跟源码实现大差不差了。1. 智能指针讲一下2. 并发安全3. uniqueptr独有权,怎么理解4. move操作具体做了什么5. 内存池讲讲,底层做了什么6. 系统调用sbrk和mmap有什么区别7.  sbrk具体干了什么,如何理解8. mmap干嘛的,怎么申请内存的,映射的哪块区域9. 从虚拟内存物理内存,还有用户去申请内存,全链路讲一下理解,细节。10. 对于锁,怎么理解11. 很多人都背,线程调度的最小单位,你怎么从底层去理解这句话手撕:1. 搜索旋转排序数组2. 手撕sharedptr一面面完10分钟约二面,速度超级快,给一面面试官好评。10.10 update2面:场景题较多,大多针对腾讯实习。面试前接到的字节挂的消息,面的状态很差。手撕:1. 3个线程交替打印abc  2. 合并k个有序链表
点赞 评论 收藏
分享
头像
03-14 12:22
已编辑
门头沟学院 Java
腾讯云二面 3/14 10.00
#软件开发2024笔面经# 上来先自我介绍,介绍完问了半小时实习然后问了很多场景题和八股差不多半小时1.有两张表一张商品表,一张订单表,要查询数据,应该考虑做些什么呢2.商品类型适合做索引吗3.商品下单的时候,要做一些什么考虑呢4.数据库层面怎么保证数据原子性呢5.如果把订单表放在redis里面怎么保证一致性呢6.如果数据表非常大,做查询的时候要做些什么考虑呢7.tcp为什么要三次握手呢,两次握手不行吗8.如果要你做一个qq之类的通讯功能,你会选择什么协议呢9.用长连接还是短链接呢10.如果用长连接的话,有大量的用户同时连接,会出现一些什么问题呢11.会给服务器哪些方面带来压力呢,内存、CPU、磁盘还是什么呢12.对于CPU的压力,要怎么解决呢(说的是加服务器)13.单台服务器怎么做呢14.有用过netty之类的吗,NIO、BIO、AIO之类的15.操作系统内核层面怎么做优化呢16.java的线程模型和操作系统的线程模型17.如果用UDP的话,要考虑一些什么问题呢18.UDP的话,除了丢包问题还有什么问题呢19.如果用HTTP的话,要考虑一些什么问题呢20.常用的web服务器会遇到的问题有那些呢21.共享桌面写一个多线程的题,创建10个线程,主线程要在这10个线程执行完成后执行,很快写了个例子但线程忘记start了(汗流浃背了),然后面试官提醒才加上去22.家是哪里的23.为什么想要去深圳发展最后问评价,面试官说今天也一起聊了很多,他也不能给出具体答案,需要跟其他面试者做横向对比后才给通知今天面的汗流浃背了,感觉又要二面寄在这里了-----------------------------------更------------------------------------------------面完差不多半小时,又回到复试页面了,是还有三面的意思吗
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客企业服务