- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
这篇文章内容来自 「升职加薪」星球星友 的投稿,坐标二线,去年毕业,只有实习经验,无真实项目经验,自学一段时间后,在找Golang后端开发的工作.
先说下这位朋友的自我面评:
上周在二线城市大概约到了4个面试, 自我感觉八股文回答的还可以,因为星球中的面试题没少背.
但是问 项目的问题就很垮,或者说是特别垮,因为并没有真实的一年工作经验,有很多东西不知道怎么说,经不起推敲 .
我帮他做了面试复盘之后的感受:
基础确实还可以,但是项目经验真的拉胯,很多概念都不清楚.
很重要的一点:很不自信,碰到不会的就怀疑自己,就去恶补。 你才一年的工作经验,难道要什么都会吗!?不管你是几年工作经验,有些不是你负责的,你就是不会,这没啥丢人的,不用瞎编,再去恶补,这么搞,总也准备不完.
如果是自信的应聘者, 会很明确自己的技能边界在哪里? 哪些是我负责的,我精通的;哪些是组内其他人负责的,我有打过配合。有哪些是我知道有在用,但是没实操过,但是我能和你聊聊我的实现思路,如果让我做的话,我会这样设计:巴拉巴拉... 。
下面是结合他“ 1年工作经验 ”的情况,整理的一部分面试问题和答案, 希望对缺少项目经验的小伙伴们有所启发.
这位朋友在前公司做了一个toB的电商SAAS平台,业务难度不高,而且他实际参与的开发工作并不多,并没有整体视野,也不懂得“开黑”。(咱可以不真实开发,但是和朋友抽烟吹水的时候,也聊聊项目的技术难点,为以后写简历做做准备,避免到时候抓瞎~) 。
问:你说对服务进行了拆分,为什么要拆分,拆分的依据是什么?
首先我们的项目不是微服务架构,是中台架构。拆分的依据是站在业务和功能的模块进行拆分,不同的组开发不同的服务,目前我们是拆分成了:商品服务、订单服务、支付服务、消息服务、基础服务.
问:和前端交互的页面是在哪个模块?
整体项目都是前后端分离的设计,每个模块都会和前端交互,go写服务和接口.
(我就很好奇,这个面试官到底想问啥....) 。
问:你说主要负责了订单模块,那这个订单的状态及流转是怎么实现的?
我们是通过以下方式实现:
问:你说订单完成后接入消息队列异步更新库存销量,那多个客户下单了一个商品,如何保证商品不会多卖,在并发场景下是如何处理的,类似于两个请求同时买一件商品.
在并发场景下,确保商品不会多卖是一个常见的问题。为了解决这个问题,可以采取以下措施:
通过以上措施的组合应用,可以在并发场景下保证商品不会多卖。具体的实现方式会根据系统架构和业务需求的不同而有所差异。在设计和实现过程中,需要综合考虑并发性、性能和数据一致性等因素.
更多的解决思路可以看我之前分享的 秒杀系统设计 。
问:这个项目是从0到1还是已经有完整的项目在正常迭代?
不是从0到1的,这个项目之前是PHP开发的。我们使用Go语言进行重写的.
问:用户人群是什么样的,用户量是多少?
我们是一个Saas系统,我接触到的客户是B端客户,会和技术支持一起解决一些客户反馈的问题和需求.
B端用户大概十几家在对接,B端用户对应的C端用户不是很清楚。因为我们项目是支持私有化独立部署的, 。
问:订单会做日志吗,比如说每天成交了多少订单.
会做持久化存储,存储到MySQL中;也会做日志,公司有负责数据分析的同事。大概几千单吧,我主要是负责商品中心的,订单这部分不是很了解.
问:你们数据库是自己维护吗,存储phone字段用什么类型?
是的,我们可以维护自己本地开发的数据库;如果要修改测试库和正式库的字段信息,要向领导申请.
phone是 11位的varchar 。
问:平时开发过程中是和数据库直连吗,还是中间有缓存层吗?
有直连的也有加入redis缓存层的,不同的场景处理方式不一样。 比如我负责的商品中心,热点商品接口是会用缓存的.
商品可售状态就不会走缓存,而是直接查询数据库,根据用户选择的商品规格和所在地直接查询数据库.
问:你用说redis缓存,什么时候查库呢?
看场景和具体的需求,就像前面提到的:
商品可售状态就不会走缓存,而是直接查询数据库,根据用户选择的商品规格和所在地直接查询数据库.
问:一个场景,用户购买商品,写入数据库到一半时崩了,如何保证正确写入?
在处理用户购买商品的场景中,确保正确写入数据库是非常重要的。为了保证数据的完整性和一致性,可以采取以下措施:
问:在你们的项目中,哪种场景下可以用协程?
问:linux命令操作会吗,平时操作日志是怎么查,在db上还是有专门的日志库?
管理后台的操作日志在管理后台能直接查看,有表进行记录.
错误日志和请求日志是通过查看log日志的方式查看的:比如,tail -f xxx.log 。
另外补充一下:
在实际应用中,日志通常会记录在文件中,可以通过上述命令来查看和分析日志。日志文件的位置和命名方式可能因不同的应用程序和配置而有所不同.
此外,有些应用程序会将日志记录在数据库中,以便更方便地进行查询和分析。这些应用程序通常会提供专门的日志库或工具,用于管理和查询日志数据。例如,Elasticsearch、Logstash和Kibana(ELK Stack)是一套常用的日志管理和分析工具,可以将日志数据存储在Elasticsearch中,并使用Kibana进行可视化和查询.
我个人是觉得上面这些问题比较简单,比较符合“一年工作经验”的求职设定.
为什么这位朋友会觉得无从下手,说不好呢?究其原因还在于缺少真实的项目经历.
要么去花时间恶补项目经验,要么找个明白人针对项目多做模拟面试,这才是找工作的正途。可别想着走捷径.
独行难,众行易,一个人刻意练习是孤独的.
欢迎加入 我们的小圈子 ,一起刻意练习,结伴成长! 。
微信号:wangzhongyang1993 。
公众号:程序员升职加薪之旅 。
也欢迎大家 关注我的账号 ,点赞、留言、转发。 你的支持,是我更文的最大动力! 。
最后此篇关于后端工程师求职实录:二线城市就业攻略与心得分享的文章就讲到这里了,如果你想了解更多关于后端工程师求职实录:二线城市就业攻略与心得分享的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
直接上代码,可以写在公共文件common和继承的基础类中,方便调用 ?
1、php服务端环境搭建 1.php 服务端环境 安装套件 xampp(apach+mysql+php解释器) f:\mydoc文件(重要)\dl_学习\download重要资源\apache
如下所示: Eclipse快捷键 Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
第一步:conn.PHP文件,用于连接数据库并定义接口格式,代码如下: php" id="highlighter_808731">
本篇文章整理了几道Linux下C语言的经典面试题,相信对大家更好的理解Linux下的C语言会有很大的帮助,欢迎大家探讨指正。 1、如果在Linux下使用GCC编译器执行下列程序,输出结果是什么?
安装完最新的Boost库 官方说明中有一句话: Finally, $ ./b2 install will leave Boost binaries in the lib/ subdirecto
为了梳理前面学习的《spring整合mybatis(maven+mysql)一》与《spring整合mybatis(maven+mysql)二》中的内容,准备做一个完整的示例完成一个简单的图书管理功
网站内容质量仅仅是页面综合得分里面的一项.不管算法如何改变调整,搜索引擎都不会丢弃网站页面的综合得分。 一般情况下我们把页面的综合得分为8个点: 1、标题的设置 (标题的设置要有独特性)
最近事情很忙,一个新项目赶着出来,但是很多功能都要重新做,一直在编写代码、debug。今天因为一个新程序要使用fragment来做,虽然以前也使用过fragment,不过没有仔细研究,今天顺道写篇文
Android资源命名规范 最近几个月,大量涉及android资源的相关工作。对于复杂的应用而言,资源命名的规范很有必要。除了开发人员之外,UI设计人员(或者切图相关人员)也需要对资源使用的位置非常
以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射。 两者相差不多都支持一对一,一对多,多对多,本章简单介绍一对一的使用以及注意点。
如下所示: ? 1
如果想在自定义的View上面显示Button 等View组件需要完成如下任务 1.在自定义View的类中覆盖父类的构造(注意是2个参数的) 复制代码 代码如下: publ
实现功能:实现表格tr拖动,并保存因为拖动改变的等级. jsp代码 ?
代码:测试类 java" id="highlighter_819000"> ?
红黑树是一种二叉平衡查找树,每个结点上有一个存储位来表示结点的颜色,可以是red或black。 红黑树具有以下性质: (1) 每个结点是红色或是黑色 (2) 根结点是黑色的 (3) 如果一个
废话不多说,直接上代码 ? 1
码代码时,有时候需要根据比较大小分别赋值: ? 1
实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下Git的相关用法,废话不多说,直接开写。 目的:通过Git管理github托管项目代码 1、下载安装Git 1、下载
直接上代码: 复制代码 代码如下: //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABC
我是一名优秀的程序员,十分优秀!