10个常见的Redis面试"刁难"问题

导读:在程序员面试过程中Redis相关的知识是常被问到的话题。作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题。十分值得一读。

作者简介:钱文品(老钱),互联网分布式高并发技术十年老兵,目前任掌阅科技资深后端工程师。熟练使用 Java、Python、Golang 等多种计算机语言,开发过游戏,制作过网站,写过消息推送系统和MySQL 中间件,实现过开源的 ORM 框架、Web 框架、RPC 框架等

Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各种刁难。作为一名在互联网技术行业打击过成百上千名【请允许我夸张一下】的资深技术面试官,看过了无数落寞的身影失望的离开,略感愧疚,故献上此文,希望各位读者以后面试势如破竹,永无失败!

Swoole实现即时聊天服务

需求背景

就技术面而言,即时通讯对很多人或公司来说已经没有什么门槛,技术方案有如雨后春笋,也各有千秋,也有不少专业提供第三方服务的公司,如云信融云等等,几个大厂(阿里云腾讯云)也有提供云服务。

第三方应用共享Laravel项目Session

Laravel 框架越来越被PHP开发者青睐,被应用得越来越广泛,大家都恨不得全部用它来重构项目,boss们当然不会同意,但是我们作为工程师也是不会放弃的,那要怎么办呢?

没错,按模块拆分重构,比如注册登入等小模块先重构。

ES报错Result window is too large问题处理

我在使用Elasticsearch进行search查询的过程中,出现了Result window is too large问题。

Result window is too large, from + size must be less than or equal to: [10000] but was [43155]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.

让Lumen支持请求控制

Lumen 是你构建微服务架构和 API 应用的完美解决方案,事实上,她是全宇宙最快的框架之一,甚至要快过以速度著称的 SilexSlim,现在,为你的 Laravel 应用程序编写微服务架构变得再简单不过了。

但是你在使用的过程中,你会发现很多 Laravel 中好用的功能都被精简了,比如说请求控制中间件 Throttle。这个中间件能简单的实现请求控制。那么接下来跟我一起为 Lumen 重新添加这么好用的功能吧。

让Lumen支持Session

官方介绍:https://lumen.laravel-china.org/docs/5.3/authentication

Lumen 虽然与 Laravel 使用了相同的底层类库实现,但是因 Lumen 面向的是无状态 API 的开发,不支持 session,所以默认的配置不同。Lumen 必须使用无状态的机制来实现,如 API 令牌(Token)。

也就是说Lumen内核已经剥离了Cookie、Session,如果需要使用到,需要增加安装,经过一阵折腾,终于整好了,顺便记录下来。

让Lumen支持Cookie

官方介绍:https://lumen.laravel-china.org/docs/5.3/authentication

Lumen 虽然与 Laravel 使用了相同的底层类库实现,但是因 Lumen 面向的是无状态 API 的开发,不支持 session,所以默认的配置不同。Lumen 必须使用无状态的机制来实现,如 API 令牌(Token)。

也就是说Lumen内核已经剥离了Cookie、Session,如果需要使用到,需要增加安装,经过一阵折腾,终于整好了,顺便记录下来。

Sphinx Ranking Mode(排序模式)

Ranking overview(概览)

Ranking (aka weighting) of the search results can be defined as a process of computing a so-called relevance (aka weight) for every given matched document with regards to a given query that matched it. So relevance is in the end just a number attached to every document that estimates how relevant the document is to the query. Search results can then be sorted based on this number and/or some additional parameters, so that the most sought after results would come up higher on the results page.

排序(又名加权),是基于请求匹配到的结果,计算所谓的相关性(又名权重)的一个程序。 相关性是请求结束后被附加在文档结果中的一个估算出来的数值,表示匹配的文档于请求的关键词相关的程度,然后搜索的结果就能基于这个数值和其他的一些附加的参数进行排序,这样大多数相关的结果就能排在前面。

MySQL Connection using old authentication protocol refused

有一台mysql升级到5.6版本,结果连接一些低版本的mysql服务器报出如下异常:

Warning: mysql_connect(): Connection using old (pre-4.1.1) authentication protocol refused (client option ‘secure_auth’ enabled)

异常原因在于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储;但是客户端升级之后采用了新的密码格式。mysql5.6版本遇到这种不一致的情况就会拒绝连接。