仿牛客网讨论社区项目—项目总结及项目常见面试题

1.项目中大部分的功能和技术

        整个技术是构建在SpringBoot上的,其他技术是依托于SpringBoot之上的。SpringBoot只是起到辅助的作用,降低其他技术的使用难度。整个技术的核心是Spring框架,在Spring之上使用了SpringMvc(解决了前后端请求处理交互的问题)、Spring Mybatis(可以访问数据库)、Spring Security(用于管理项目中的登录权限等)。SpringMvc、Spring Mybatis、Spring Security构成了项目的基石,项目中几乎所有请求是由他们完成的。 

2.权限模块

        应用了Spring Email和SpringMvc中的Interceptor(拦截器),其中拦截器能拦截所有请求,能解决通用的问题,涉及的面比较广、影响的请求比较多要重点关注。权限模块主要开发了注册、登录、退出、状态(在每个页面上怎么去显示登录用户的头像、用户名等)、设置(用户头像、修改密码等)、授权(不同类型的用户访问不同的功能,使用Security实现的)、会话管理(重点需要了解Cookie、session、项目中为什么不用session(主要是考虑分布式部署Session的问题)、不用session是如何解决的问题(把数据存在Redis中,使用了ThreadLocal))等功能。

3.核心功能

        基于SpringMvc实现的首页、帖子、评论、私信的功能,异常和日志使用到了通用的技术。重点关注敏感词是怎么实现的(前缀树算法),事务也需要重点关注(什么是事务、事物的隔离级别,怎么去管理事务的)。整个模块还用到了Advice(控制器的通知,统一处理了异常)、AOP(统一记录了日志,事实上其他的很多功能(比如事务)都应用到了AOP)、Transaction(重点)。

4.性能模块

        一些高频访问的功能(点赞、关注、统计、缓存)需要redis,redis不止能应用于这些功能还应用于统计网站的UV,活跃用户等使用了redis的两种特殊的数据类型,还使用redis用作缓存提高了性能。

5.通知模块

        应用了消息队列的Kakfa,框架的使用非常简单,重点去了解Kafka的生产消费模式。重点回顾生产消费模型,了解能够解决哪些问题。

6.搜索功能

        全文搜索:针对帖子能够进行全文搜索,使用了Elasticsearch,使用起来也是非常简单,重点了解其数据结构,其存数据的方式与数据库不同,关注其索引的结构(找一找相关的文章)

7.其他功能

        排行榜、上传、服务器缓存、线程池、缓存等。使用Quartz定时任务,重点关注Caffeine怎么提高了应用的性能,还要了解其局限性。还要重点关注线程池、缓存这两个话题。

8.面试官考察的方面

1.职业素养

程序员的基本素养。数据结构与算法、计算机基础等。

2.项目经验

技术栈的丰富度,看你来了之后能不能直接干活。

3.钻研能力

看看你的长板,看你熟悉的部分,一直问到你的底位置(不要贪多,钻研一个问题)。

9.常见面试题

主要有三个方面 

9.1.1 MySQL存储引擎

        InnoDB好在他支持事务,绝大多数时候要使用InnoDB。NDB集群式部署的时候要用到。

9.1.2 MySQL事务

 很重要!!!!

9.1.3 MySQL锁

实现隔离性需要加锁

 

9.1.4 MySQL索引

9.2.1 Redis数据类型

9.2.2 Redis过期策略

 淘汰策略

 9.2.3 Redis缓存穿透

 9.2.4 Redis缓存击穿

9.2.5 Redis缓存雪崩

9.2.6 分布式锁 

 9.3.1 Spring IoC

9.3.2 Spring AOP

 9.3.3 Spring MVC

  • 客户端发出请求访问服务器时,由DispatcherServlet处理。

  • DispatcherServlet调用HandlerMapping(根据访问路径找到对应Controller)。

  • HandlerMapping给DispatcherServlet返回HandlerExecutionChain对象(封装了Controller和拦截器)。
  • DispatcherServlet调用拦截器的preHandle()方法,接着调用HandlerAdapter(内部调了Controller)。
  • HandlerAdapter返回ModelAndView给DispatcherServlet,返回后调用postHandle()方法。
  • DispatcherServlet调用ViewResolver(视图解析器)。
  • ViewResolver解析View,由模板引擎渲染,(拦截器的afterCompletion()方法)返回客户端。

至此项目完结!

项目代码及相关资源:Ming-XMU (Yiming Zhang) · GitHub

麻烦点点小星星!!!!!!

CSDN下载需要积分基于SpringBoot仿牛客网讨论社区项目-Java文档类资源-CSDN下载

从零开始—仿牛客网讨论社区项目(一)_芙蓉铁蛋的博客-CSDN博客

从零开始—仿牛客网讨论社区项目(二)_芙蓉铁蛋的博客-CSDN博客

从零开始—仿牛客网讨论社区项目(三)_芙蓉铁蛋的博客-CSDN博客

从零开始—仿牛客网讨论社区项目(四)_芙蓉铁蛋的博客-CSDN博客

从零开始—仿牛客网讨论社区项目(五)_芙蓉铁蛋的博客-CSDN博客

从零开始—仿牛客网讨论社区项目(六)_芙蓉铁蛋的博客-CSDN博客

仿牛客网讨论社区项目—优化网站性能_芙蓉铁蛋的博客-CSDN博客

  • 70
    点赞
  • 435
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
仿牛客UI(张俊峰) 1.图标来自牛客app 2.大致实现UI效果 3.实现抽提 底部:RelativeLayout(学习、社区、消息、我的牛客) + 中间 自定义ViewPager(禁止滑动) 一、学习界面: (1) 标题模块:牛客 (2) 图片滑动模块:ViewPager+Pager (3) 签到模块:显示(已打卡、今日刷题、今日学习、共打卡) (4) 学习模块:Linearlayout(可用GridView)(专题练习、公司套题、错题练习、课程学习、大题查看、期末备考) ? 点击中任何一个LAYOUT,显示一个由ExpandableList实现一个列表 ? 点击ExpandabList子标签中的练习字样,自动跳转到另一个Activity,进行专项练习。 ? 可以进行考试,有倒计时,要求达到牛客网的效果,并能出考试结果。 (5) 参与模块:(文字(我参与的课程)+添加按钮) ? 点击添加按钮跳转到另一页面。由 ListView实现 二、 社区界面: 1. 标题模块:显示文字(最新),点击最新弹出一个上下文菜单(最新、最热、精华)。 2. 滑动标题模块:ViewPager+PagerSlidingTabStrip 3. 内容模块:使用ListView显示用户内容。 三、 消息界面: 1、 菜单模块:(朋友私信、系统通知)使用ViewPager实现(可用Tabhost) 2、 朋友私信页面:显示一个私信图片 3、 系统通知页面:(由ListView实现)由于比较固定本人使用RelativeLayout实现 四、 我的牛客界面: 1. 头像显示模块:头像+用户名+用户信息 2. 内容显示模块 更多效果请试用,感谢支持!
恒生电子ai面试问题: 牛客网是一个针对程序员求职的在线平台,主要提供岗位介绍、刷题练习、面试经验等资源。对于恒生电子ai面试问题,以下是我给出的简要回答: 1. 请简单介绍一下恒生电子的ai部门以及您所申请的岗位。 恒生电子的ai部门致力于开发和应用人工智能和机器学习技术,为公司的业务提供智能化的解决方案。我所申请的岗位是XXX,主要负责XXX。 2. 请介绍你对人工智能的理解和研究方向。 人工智能是一门探索模拟人类智能思维与行为的科学与工程学科,主要关注机器如何实现类似于人类的智能。我的研究方向主要包括XXX,我对XXX方面的研究充满热情并具备一定的经验。 3. 请介绍一项你在机器学习或深度学习领域的项目经历。 我曾参与一个基于深度学习的图片分类项目。我们使用了卷积神经网络(CNN)和数据增强技术,对大量图片数据进行训练。通过调优网络结构和参数,我们取得了较好的分类效果,并成功将该模型应用于实际场景,取得了一定的成果。 4. 请谈谈你对神经网络的了解。 神经网络是一种由多个神经元组成的计算模型,通过模拟神经元之间的连接和传递信号实现模式识别和学习。我了解基本的神经网络结构,如前馈神经网络、循环神经网络和卷积神经网络,并了解它们在不同领域的应用。 以上回答是基于我的个人经验和对恒生电子ai面试问题的理解,请根据实际情况进行参考和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

裁道友不裁贫道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值