面试时下午18:00开始的

面试官为了不让我紧张,一直在强调,我们就是随便谈谈,没什么的

1、说说你这个微信点餐服务吧

是去年12月份开始做的,一共用了3个月,由于是给学校食堂开发的,需要学校领导审核才能通过,目前老师在积极争取。

这个项目前端是基于微信小程序的,用户直接使用微信小程序注册并使用,而后端是用PC端的,订单信息直接回发布在卖家的电脑上,项目是用Spring boot集成了Spring+Spring MVC+Spring data jpa部分持久层用了Mybatis做了级联和动态SQL查询,前端是使用Bootstrap+少部分Vue,前端引擎为thymeleaf。
2、你用了Redis,大概是怎么样的?

项目中我们想象了一样的一个场景,假设商家在食堂有一个活动,有1000个西瓜,大家通过秒杀来抢,这时候就发生了高并发,为了保证线程安全,我们做了一个基于Redis的分布式锁,主要用到了SETNX和GETSET这两个命令,从而不使用synchronized关键字,既保证了安全又保证了速度,和响应时间。

而且在大部分数据的查询都使用了Redis的缓存机制,保证了数据的在高并发时间的交换,主要是Redis的命中,失效,和更新问题。
3、那你知道分布式锁是怎么样的?

我知道用了两个命令来写一个线程安全的秒杀,具体是什么我对分布式了解不是很多

(面试官说:我们假如有一个数据需要被很多的服务器来读取,那么我们怎么做到线程安全呢?我们就需要给它加锁,让每个服务器都读到正确的结果)

4、锁是怎么实现的

我记不太清我怎么回答的了,大概就说了CAS原理的什么什么

5、你在项目中用了MySQL,那你说说你对它的理解?

我使用MySQL是5.7版本的,默认的存储引擎是InnoDB,它和MyISAM的区别在于

  • InnoDB支持外键,MyISAM不支持
  • InnoDB支持事务,MyISAM不支持
  • InnoDB是行级锁,而MyISAM是表级锁
  • 对于count(*)来说,MyISAM的速度比InnoDB快很多很多,因为它内嵌了一个计数器
  • 对于两者都是索引都是B+树的,但是InnoDB是集聚索引,而MyISAM是非聚集索引

6、说一说Spring MVC的注解你用了哪些?

首先每个Controller都需要有一个URL的配置

比如URL路径映射:@RequestMapping("/hello"),可以将多个url映射到同一个方法上。

我们需要将这个类作为Bean放入IOC容器

就需要@Controller或者@RestController

这两个区别在@RestController注解相当于@ResponseBody + @Controller合在一起的作用,这样我们返回的数据就会变成JSON格式,会很大方便和前端的数据对接

我们在传数据的时候会用到

@PathVariable

用于将请求URL中的模板变量映射到功能处理方法的参数上

@requestParam

控制层获取参数,类似一种是request.getParameter("name")

@ResponseBody

该注解用于将Controller的方法返回的对象,一般用于返回json的数据

在bean的注入时使用

@Resource和@Autowired

7、你用了AOP了吗?它主要用在什么地方?

  • 日志功能
  • 事务管理
  • 权限管理

当然你也可以使用 AspectJ ,Spring AOP 已经集成了AspectJ ,AspectJ 应该算的上是 Java 生态系统中最完整的 AOP 框架了。

使用 AOP 之后我们可以把一些通用功能抽象出来,在需要用到的地方直接使用即可,这样大大简化了代码量。我们需要增加新功能时也方便,这样也提高了系统扩展性。。

8、动态代理是什么?有哪些应用?

答得不好,略

9、数据怎么保证安全?或者说线程怎么是安全的?

我想错了,面试官提醒了我

ACID

  • 原子性

    原子性是指一个事务是一个不可再分割的工作单位,事务中的操作要么都执行,要么都不执行

  • 2. 一致性

    一致性是指在执行一个事务前和后,数据库的完整性约束没有没有被破坏。也就是说事务不能破坏数据库的完整性以及业务逻辑的一致性。

  • 3. 隔离性

    隔离性是指多个事务并发时,每个事务应该是隔离的,一个事务不应影响其他事务的运行效果

  • 4. 持久性

    持久性意味着事务执行完成后,该事务对数据库的更改便持久到了数据库中,这个更改是永久的。

10、mybatis 中 #{}和 ${}的区别是什么?

#{}是预编译处理,${}是字符串替换;

Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;

Mybatis在处理${}时,就是把${}替换成变量的值;

使用#{}可以有效的防止SQL注入,提高系统安全性。

11、怎么避免SQL注入?

  1. PreparedStatement(简单又有效的方法)

  2. 使用正则表达式过滤传入的参数

  3. 字符串过滤

  4. JSP中调用该函数检查是否包函非法字符

  5. JSP页面判断代码

12、异常处理会向上抛出吗?

throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。

13、我看了你的博客你说说你的单例模式吧?

面试官竟然看来我的博客,可惜我早已记不清写的是什么?可能还被误认为是抄的

然后面试官拿出了一个本子,开始给我讲了单例模式的实现,为什么是单例的,怎么才能使单例的,然后又讲了怎么才能使单例保证线程安全,言传身教,在这里我要好好谢谢面试官,让我懂得了很多,我发现了我自己底层知识的不足。

最后面试官问了我,有什么想问他的,我说我发现自己底层知识很薄弱,怎么才能加强?

面试官说,你其实不错了,在我遇到的实习生面试中,你在努努力,学习底层知识才是永远适用的,你想想哪些框架的迭代速度很快,也许过几天就会有更好的框架出现,我们只要底层知识牢固,那学习新框架就会很快的。

你来腾讯实习的话,要多和同事学习技术,可能实习几天就会参加项目的,更重要的是学习为人处世的态度。。。

面试官和我聊了很多,他真的像一个领路人,给我了一个奋斗的方向,这次面试太棒了,教会了我很多,不论是技术还是为人处世的态度。

谢谢您,我的面试官。

我走的时候还和他握了手,我觉得自己又有了成长了不少!

腾讯(大连)研发一面-20190620相关推荐

  1. 腾讯自主研发动画组件PAG开源

    PAG (Portable Animated Graphics) 是一套完整的动画工作流.它提供从AE导出插件,到桌面预览工具,再到各端的跨平台渲染SDK,助力于将AE动画方便快捷的应用于各平台终端. ...

  2. 首度揭秘:腾讯敏捷研发和极速交付破局之道

     导读  腾讯到底是怎么进行敏捷研发和极速产品交付的呢? 腾讯研发管理部高级产品经理.敏捷教练张贺,受邀在DevOpsDays深圳站中进行了相关分享. 他从"道.法.术.器"四个方 ...

  3. 企业用户福利来袭!腾讯三大研发管理产品集中亮相2018腾讯合作伙伴大会

    11月1日,2018腾讯全球合作伙伴大会在江苏大剧院开幕.在腾讯新一轮架构调整后的首次大会上,腾讯研发管理产品的代表--腾讯TAPD.腾讯乐享及腾讯工蜂,第一次集中公开亮相2018腾讯合作伙伴大会展区 ...

  4. 腾讯敏捷研发协作平台TAPD荣获CCF科学技术奖

    10月26日,腾讯敏捷研发协作平台TAPD,荣获"2018年CCF科学技术奖科技进步杰出奖".该奖项由中国计算机学会(CCF)授予,旨在嘉奖计算机及相关领域在技术研究.技术开发.技 ...

  5. 建设一站式DevOps平台,腾讯云研发效能提升实践

    本文作者:张渝 导语 | 近年来,研发效能提升越来越受到业界重视,许多厂商都在不断探索研发效能提升之路,从而实现研发效率和质量的持续优化,以应对日趋复杂的产品开发.那么腾讯云的研发效能相关工作是如何开 ...

  6. 优图实验室升级为腾讯计算机视觉研发中心,与 Science 期刊达成战略合作

    2018 年 9 月 6 日,腾讯优图与美国科学促进会官方刊物 Science 系列期刊联合举办的首届计算机视觉峰会在上海召开.腾讯高级执行副总裁汤道生在会上宣布,腾讯优图实验室升级为腾讯计算机视觉研 ...

  7. 腾讯无线大连研发中心社招岗位

    招聘

  8. 天涯明月刀开发_腾讯天涯明月刀研发全程:六年四个阶段成就最美国风

    DoNews游戏11月17日消息(编辑 陈艳曲)腾讯游戏嘉年华(TCG峰会)行业峰会上,<天涯明月刀>创意总监杨峰分享了<天涯明月刀>的实践与心得,分享了<天涯明月刀&g ...

  9. 一秒钟法则:来自腾讯无线研发的经验分享

    在2014年4月11日的腾讯分享日活动上, 来自腾讯MIG的移动互联网事业群运营总监/T4专家,负责运营QQ手机浏览器.腾讯PC浏览器.腾讯手机安全管家.腾讯电脑管家产品的刘昕介绍了移动无线产品研发中 ...

最新文章

  1. SAP WM中阶之LT25确认Group中的TO单据
  2. BZOJ 3524主席树裸题 (雾)
  3. php整蛊关机代码,整人代码大全
  4. [置顶] 我的程序员之路(4)---C语言课程设计
  5. ubuntu14.04环境下spyder的安装
  6. Toonz开源,Apple开源CareKit,以及更多新闻
  7. 【codevs1041NOIP01TG】Car的旅行路线,最短路中的数学题
  8. POSIX 线程清理函数
  9. MySQL用户的增删改权以及root远程连接
  10. 封禁3年,微信重磅功能回归!
  11. 楚留香服务器维护时间,《一梦江湖》手游官方网站_《楚留香》现已全面升级重制-3月9日维护更新公告...
  12. 易语言调用大漠插件判断游戏是否在线
  13. python_文件统计问题:文件” seqs_fasta.txt”保存着具有fasta格式的100多个蛋白质氨基酸序列
  14. 人机交互大作业文档预览
  15. iPhone 手机修复屏幕划痕
  16. 如何下载网站中的图片元素
  17. 前后端分离-小项目-1前端布局
  18. [推荐] Chrome谷歌浏览器实时英文字幕插件
  19. 科学计算机读书报告单,科学网—读书报告-20171016 - 梁斌的博文
  20. 老男孩教育 | 0基础转行学运维,收获薪资13K Offer!

热门文章

  1. html界面——button设置样式
  2. 学JAVA编程用什么电脑配置_学习编程,你真正需要的是什么样配置的电脑?
  3. .Net 全球化应用(Global):中英文翻译(附:谷歌在线翻译代码)
  4. esp-http-client 发送 chunked 数据
  5. Appium爬虫小案例
  6. 9个不错的PDF搜索引擎
  7. 利用Python理解TTF矢量字体显示原理
  8. 简单认识顺序表的基本操作
  9. xmp预设怎么导入pr_【教程】如何使用xmp格式的预设,看完这篇就懂了
  10. springboot影院售票小程序毕业设计源码111154