后端 – V商人 http://www.cyclm.com Fri, 19 Aug 2022 17:21:55 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.1 http://www.cyclm.com/wp-content/uploads/2022/03/ico.png 后端 – V商人 http://www.cyclm.com 32 32 java后端开发面试题(java后端开发招聘信息) http://www.cyclm.com/86574.html Fri, 19 Aug 2022 17:21:54 +0000 http://www.cyclm.com/?p=86574 前言:

写这篇主要是想复盘一下我的两次面试经历,一个是B站的后端开发岗,另一个是百度的搜索研发。文章涵盖了MySQL、Golang、 计算机网络、Elasticsearch、 分布式、搜索的一些知识。

作者:郁南

1.你之前是负责搜索的,那我想听一下你们搜索系统的大致流程

说实在还挺惊讶面试官会问这个的,因为对方是一个后端工程师,所以就没讲多细致,答得很general,大体来说就是,query分析->粗排召回->精排算特征-> learning to rank计算score ->返回结果,每个再展开来说一些即可。面试官问这个相当于在问项目,确定简历的真实性,所以这个没啥参考价值。

2.MySQL的事务隔离级别有哪些?

总共是四大隔离级别,理解以后用自己的话答就好了

面试官还是比较满意这个答案的,但接下来面试官问道:

3.以上事务隔离是如何实现的?

老实回答,这题我不会,面试官提示MVCC,我还是不会hhh。回去翻了一些资料,在这里补充一下答案。所谓的MVCC就是MultipleVersion Concurrency Control,多版本并发控制,从名字上也可以看出来,它是使用版本号来对数据进行并发控制的。实际上,在数据表的每一列,都存储两个隐藏列,一个是trx_id,代表事务的ID,另一个是roll_pointer,指向其上一个版本的记录,如此组成一个记录的版本链,接下来就可以讲ReadView了,它存储着一种用来记录当前活跃状态的读写事务,用于判定该transaction可见到的数据版本。

4.MySQL索引的原理是什么?

B+树,本质上它是将瘦长的平衡二叉树,改造成一个矮扁的平衡多叉树从而减少IO查询次数,平均查询复杂度仍能保证O(logN),另外与B树不同的是,除了叶子结点外,其他结点均不存储数据,另外叶子结点之间,用链表方式相连以加速查询。当然视面试官的反应,可以再补充B+树的插入和删除操作。

5.MySQL建立索引时,应该注意什么?

这个按照自己的经验来回答了,三点:1.对区分度高的列做索引, 对于那种只有两三个值得索引并没有多大意义。2.建立联合索引时要满足最左匹配原则,例如SELECT * FROM TABLE WHERE A=1 AND B=2 AND C=3,此时需要对ABC建联合索引, 对ABC单独建三个索引是没用的。面试官又问,那我对BAC建联合索引就命中不了索引了吗?我说是的,被面试官怼了一下,其实MySQL在很久以前就在查询优化器里加入了这个feature,是可以命中的。3.只对需要作为查询条件的列建索引,否则会拖慢插入速度。

6.MySQL存储引擎由哪些?他们有什么区别?应用场景是怎样的

也是一道经典MySQL题了,主要分为Innodb和MyISAM,最主要的区别在于InnoDB采用的簇集索引,MyISAM采用的是非簇集索引。

对于非簇集索引来说,叶子结点存放的值实际上是data域的地址,data和 索引是完全分离的。

7.用户从输入URL到看到浏览器展示结果,经过了哪些过程?越详细越好。

8.redis的数据类型有哪些?在哪些场景使用?

string, set, list, hash dict, zset

string就是经常用的key value键值对;

hash dict可以表示一个对象,是一个field和value的映射表;

set就是集合,用hash来实现的;

list本质上是个双端队列, 可以实现从左边add也可以从右边add

zset是有序集合, 用跳表来实现,可以用来实现实时排行榜。

9.redis设置过期时间的原理是怎样的?

这个我没有看过,但是我猜了两种策略,给猜对了:1.惰性删除,像限流器那样,只有在get的时候去检查它是否expire,如果过期,就删除。2.定时删除。 具体的我没想对,回去看了一下,官方给出的答案是这样的:

Specifically this is what Redis does 10 times per second:

Test 20 random keys from the set of keys with an associated expire.

Delete all the keys found expired.

If more than 25% of keys were expired, start again from step 1.

也就是说,每秒做10次这样的行为: 从所有设置过期时间的key中, 随机选择20个key,删除所有过期的key, 如果25%的key都过期了,就回到步骤1再做一次。

10.你刚才提到了限流器,如何实现一个限流器?

限流器的原理就是令牌桶,按照一定的时间往桶里加入Token,如果桶已经满了丢弃令牌。每个新请求就消耗一个token, 如果token没了就拒绝服务请求。新请求来临时,会请求从桶中拿走一个Token,如果没有Token可拿了就阻塞或者拒绝服务请求,它的所有计算本质上都是惰性计算。

11.Goroutine为什么这么轻?

简单来说,因为它是发生在操作系统的用户态的,不需要进入内核态进行系统调用,操作系统的上下文切换会带来很大的开销,切goroutine和线程一样,共享堆,不共享栈。

Golang的垃圾回收是怎么做的?

很早之前看过,刚好被问到了就回答得比较顺利。三色并发标记,基本思想是把内存中的所有对象分为黑白灰三类,一开始所有对象都是白色对象,然后把所有可达对象标记为灰色,再从所有灰色对象出发,将所有触及到的对象标记为灰色,自身灰色标记为黑色对象,如此循环往复,直到没有灰色对象为止,由于每次标记剩下的都是不可达的白色对象,所以直接将白色对象删除即可。

最后

本文分享给需要面试刷题的朋友,也祝愿大家顺利拿到自己想要的offer,这份资料主要包含了Java基础,数据结构,jvm,多线程等等,由于篇幅有限,以下只展示小部分面试题

有需要的伙伴可以关注、点赞、评论 私信回复我:“大厂”关键字,就可以拿到上述资料了!

彦祖,都看到这了,点赞,收藏,叨叨一下扒~

]]>
微信小程序后端怎么搭建(微信小程序前后端搭建) http://www.cyclm.com/76030.html Wed, 10 Aug 2022 15:27:53 +0000 http://www.cyclm.com/?p=76030 1、后台搭建

①、创建网站:宝塔 网站——添加站点

输入域名(前期自己在阿里云购买的域名),选择创建数据库,PHP版本选择前面设置到的7.2。

注意:禾匠4.4.8后台必须用MYSQL5.6 安装,如果是其他版本,请先备份数据库,然后卸载重新安装

丝袜足交福利网址视频 ②、安装SLL证书,开启强制HTTPS

先找到我们在域名购买环节下载得到的(***apache、***nginx)两个文件夹,其实用其中一个就行了,比如***nginx这个文件夹有2个文件,并且每个文件的类型都给标记出来了,用记事本打开这俩文件,记事本会有一堆文字,复制粘贴到下面对应的KEY/PEM框里,保存就OK了,同时打开强制HTTPS开关。

返回站点,应该在下图红框位置有个部署之类的,部署后就跟下图差不多了。

2、获取源码

获取源码这事是在我整个搭建环节中最耗费我时间的环节,这个不是说时间长,跟域名备案比肯定要短点,主要原因还是我想弄个开源免费的源码,我还是太天真,从开源社区搞了好多源码,都有套路,要么前端要钱,要么没解压密码,实在没办法又回万能的淘宝买源码,淘宝一搜有很多,各类破解版,各类独立版,甚至还有可升级版,我相信网上的技术大牛,可以实现更新,WINDOW都能破解这些小程序破解还不简单,并且有足够的需求市场在进行利益驱动。

同样本着高性价比的原则,按销量排名,有好评的的店铺,买了一套,淘宝的也有很多分类,有纯提供源码的,有提供安装指导的,有提供更新服务的,有提供包上线的,我为了学习肯定要只要源码自己钻研,遇到困难解决困难,方可成长,让人给搭建起来算啥事(最主要是穷),当时买这套源码也是忐忑的不行,虽然没花几个钱,因为当时我的域名还没备案下来,前端无法验证,硬着头皮上的。

在获取了源码搭建好后台后,把后台设置一遍后,我前面提到的刚开始的各种疑问豁然开朗,原来小程序是这样的,为啥一些小程序能卖200 300元,这也能想到我疫情期间临时搭建的小程序花费500元的成本,也不便宜,可想而知在疫情期间卖小程序的得赚了多少钱,全国在疫情期间像我们这样有线上售卖需求的企业数量级估计得百万级别,短期的小陈鼓搭建成本非常低,等于临时租赁服务器和源码网站。

获取源码一般分:后端和前端,所谓后端就是要传到我们租赁的服务器上,形成一个运行的网站,前端是在微信小程序端上传的(有开发工具),前端后端通过在前端设定好胡同的链接,即可实现搭建。

他们说还有很多其他形式,作为技术小白的我就不去分析了,只说明我搭建成功的这个流程即可,别贬低我也不用赞扬我,因为我没有任何敲代码的能力,最多理解逻辑后复制粘贴而已。

]]>