前方高能!用java写自动售货机的程序
一、前言
聊的是八股的文,干的是搬砖的活!
面我的题开发都用不到,你为什么要问?可能这是大部分程序员求职时的经历,甚至也是大家讨厌和烦躁的点。明明给的是拧螺丝的钱、明明做的是写CRUD的事、明明担的是成工具的人!
明明… 有很多,可明明公司不会招5年开发做3年经验的事、明明公司也更喜欢具有附加价值的研发。有些小公司不好说,但在一些互联网大厂中,我们都希望招聘到具有培养价值的,也更喜欢能快速打怪升级的,也更愿意让这样的人承担更大的职责。
但,你酸了! 别人看源码你打游戏、别人学算法你刷某音、别人写博客你浪98。所以,没有把时间用到个人成长上,就一直会被别人榨取。
一面
- 自我介绍
- 项目中的监控:那个监控指标常见的有哪些?
- 微服务涉及到的技术以及需要注意的问题有哪些?
- 注册中心你了解了哪些?
- consul 的可靠性你了解吗?
- consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过?
- 项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理
- Spring Boot除了自动配置,相比传统的 Spring 有什么其他的区别?
- Spring Cloud 有了解多少?
- Spring Bean 的生命周期
- HashMap 和 hashTable 区别?
- Object 的 hashcode 方法重写了,equals 方法要不要改?
- Hashmap 线程不安全的出现场景
- 线上服务 CPU 很高该怎么做?有哪些措施可以找到问题
- JDK 中有哪几个线程池?顺带把线程池讲了个遍
- 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
- SQL 索引的顺序,字段的顺序
- 查看 SQL 是不是使用了索引?(有什么工具)
- TCP 和 UDP 的区别?TCP 数据传输过程中怎么做到可靠的?
- 说下你知道的排序算法吧
- 查找一个数组的中位数?
二面
你有什么问题想问我的吗?(常规问询)
- 自我介绍、工作经历、技术栈
- 项目中你学到了什么技术?
- 微服务划分的粒度?
- 微服务的高可用怎么保证的?
- 负载均衡与反向代理,隔离,限流,降级,超时与重试,回滚,压力测试与应急预案
- 常用的负载均衡,该怎么用,你能说下吗?
(技术问)
- http重定向
- DNS负载均衡
- 反向代理负载均衡
- IP负载均衡(LVS-NAT)
- 直接路由(LVS-DR)
- IP隧道(LVS-TUN)
- 网关能够为后端服务带来哪些好处?
- Spring Bean 的生命周期
- xml 中配置的 init、destroy 方法怎么可以做到调用具体的方法?反射的机制
- Object 类中的方法
- 对象比较是否相同
- hashmap put 方法存放的时候怎么判断是否是重复的
- Object toString 方法常用的地方,为什么要重写该方法
- Set 和 List 区别?
- ArrayList 和 LinkedList 区别
- 如果存取相同的数据,ArrayList 和 LinkedList 谁占用空间更大?
- Set 存的顺序是有序的吗?
- 常见 Set 的实现有哪些?
- TreeSet 对存入对数据有什么要求呢?
- HashSet 的底层实现呢?
- TreeSet 底层源码有看过吗?
- HashSet 是不是线程安全的?为什么不是线程安全的?
- Java 中有哪些线程安全的 Map?
- HashTable 你了解过吗?
- 如何保证线程安全问题?
- synchronized、lock
- volatile 的原子性问题?为什么 i++ 这种不支持原子性?从计算机原理的设计来讲下不能保证原子性的原因happens before 原理
- cas 操作
- lock 和 synchronized 的区别?
- 公平锁和非公平锁
- Java 读写锁
- 读写锁设计主要解决什么问题?
- 你项目除了写 Java 代码,还有前端代码,那你知道前端有哪些框架吗?
- MySQL 分页查询语句
- MySQL 事务特性和隔离级别
二、事务的并发问题
- 不可重复读会出现在什么场景?
- sql having 的使用场景
- 前端浏览器地址的一个 http 请求到后端整个流程是怎么样?
- http 默认端口,https 默认端口
- DNS 你知道是干嘛的吗?
- 你们开发用的 ide 是啥?你能说下 idea 的常用几个快捷键吧?
- 代码版本管理你们用的是啥?
- git rebase 和 merge 有什么区别?
你们公司加班多吗?(题外话)
举例回答:
项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理
答:(1). IoC(Inversion of Control)是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。 对于Spring而言,就是由Spring来控制对象的生命周期和对象之间的关系;IoC还有另外一个名字——“依赖注入(Dependency Injection)”。从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,即由容器动态地将某种依赖关系注入到组件之中。
(2). 在Spring的工作方式中,所有的类都会在spring容器中登记,告诉spring这是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
(3). 在系统运行中,动态的向某个对象提供它所需要的其他对象。
(4). 依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。 总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在Spring中创建被调用者的工作由Spring来完成,然后注入调用者,即所谓的依赖注入or控制反转。 注入方式有两种:依赖注入和设置注入; IoC的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象。
AOP(Aspect Oriented Programming)
(1). AOP面向方面编程基于IoC,是对OOP的有益补充;
(2). AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了 多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的 逻辑或责任封装起来,比如日志记录,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
(3). AOP代表的是一个横向的关 系,将“对象”比作一个空心的圆柱体,其中封装的是对象的属性和行为;则面向方面编程的方法,就是将这个圆柱体以切面形式剖开,选择性的提供业务逻辑。而 剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹,但完成了效果。
(4). 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。
(5). Spring实现AOP:JDK动态代理和CGLIB代理 JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理;其核心的两个类是InvocationHandler和Proxy。 CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强;需要引入包asm.jar和cglib.jar。 使用AspectJ注入式切面和@AspectJ注解驱动的切面实际上底层也是通过动态代理实现的。
(6). AOP使用场景:
- Authentication 权限检查
- Caching 缓存
- Context passing 内容传递
- Error handling 错误处理
- Lazy loading延迟加载
- Debugging 调试
- logging, tracing, profiling and monitoring日志记录,跟踪,优化,校准
- Performance optimization性能优化,效率检查
- Persistence 持久化
- Resource pooling资源池
- Synchronization同步
- Transactions 事务管理
另外Filter的实现和struts2的拦截器的实现都是AOP思想的体现。
美团面试场景以及面试答案(文档总结)
最后
经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。
由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。如有需要获取资料文档的朋友,可以点击这里免费获取
.(img-YhwsC3eh-1621592998350)]
[外链图片转存中…(img-NYHXBX1w-1621592998351)]
[外链图片转存中…(img-jPsvuq30-1621592998352)]
[外链图片转存中…(img-K3BbAlZ8-1621592998352)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
前方高能!用java写自动售货机的程序相关推荐
- 简易售货机JAVA sql_自动售货机 - 笨拙的小Q的个人空间 - OSCHINA - 中文开源技术交流社区...
import java.util.Scanner; /** * 华为机试 自动售货机 * 不知道对错 * @author qxl * */ public class Shop { public sta ...
- java实现自动售货机
JAVA基础练手项目-自动售货机,供大家参考,具体内容如下 要求: 简易售货机 流程: [投币]->[显示货物清单]->[选择一个商品编号购买]->[提示出货]->[找钱] 功 ...
- Java自动售货机实验报告,java案例自动售货机
组态王实验案例--全自动售货机_信息与通信_工程科技_专业资料.西门子plc与组态王的实验案例 全自动售货机操作步骤 1.新建工程,命名为全自动售货机 2.设备\\...... 脚本是系统的 用例的实 ...
- JAVA模拟自动售货机
版本说明 2015-07-02 第一版. 2015-07-04 修复余额变更错误问题(变量使用错误造成),增加修改商品数量功能,调整视图结构,修改Unicode为中文,增加功能提示. 下面的代码为最新 ...
- 基于PLC的自动售货机设计
1.1 自动售货机设计软元件 1.1.1 定时器 定时器是PLC中重要的编程元件,是累计时间增量的内部器件.定时器的工作过程与继电器控制系统的时间继电器基本相同,但它没有瞬动触点,失电时,常闭触点闭合 ...
- c 语言 饮料自动售卖机的销售过程.,饮料自动售货机带C程序和设计报告.doc
(C++) 作业 姓名:夏亮亮 学号:2010040913 班级:电子二班 设计报告 <需求分析>:本程序为饮料自动售货机的程序,能实现饮料的自动销售,能起到节约人力.减少成本的目的. & ...
- 基于FPGA状态机的自动售货机功能实现
用FPGA制作一个简单的自动售货机 这篇博客讲了如何用FPGA模拟实现自动售卖机的功能. 文章目录 用FPGA制作一个简单的自动售货机 1. 程序功能和总体框架详解 2.Divider分频模块 3.D ...
- 面试题之如何用Java设计一个自动售货机
如何用Java设计一个自动售货机程序是一个非常好的Java面试题.大多数情况会在面试比较senior的Java开发者的时候出现.在一个典型的代码面试中,你需要在一定的时间内根据对应的条件完成相关的代码 ...
- java自动售货机代码_急求简易自动售货机(java编程)
引用z17199的回答: package com.test; import java.util.Scanner; import com.sun.java_cup.internal.internal_e ...
最新文章
- Linux、Windows进程间通信
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1088:分离整数的各个数
- 【Android Studio】查看源码时提示“throw new RuntimeException(Stub!)”
- linux 网络配置 阮一峰,Vim 配置入门
- Wi-Fi 6连续两年出货量国内登顶,锐捷无线靠什么这么6?
- Luminus模板可选项
- Flutter之BottomSheet
- CSS/HTML/JS
- 2022张宇考研基础30讲 第八讲 一元函数积分学的概念与计算
- 分享个三国志2017挂机脚本 可玩性很高占用小
- 奖补多的2022年合肥高新区高成长企业申报时间入选范围及申报条件材料
- 实际开发中implement与extend区别
- 软件产品上线的基础知识
- 程序员的自我修养:如何高效学习
- Spring Bean生命周期: Bean的实例化
- SWUST OJ#1052 输出利用先序遍历创建的二叉树中的指定结点的双亲结点
- 自习室预约小程序有哪些功能?
- 用Keras构建神经网络的3种方法
- office2021 版本2203现已适配win11界面风格
- 引擎开发_ 碰撞检测_GJK 算法详细介绍
热门文章
- [IOS]iphone开发之常用代码:不断更新
- 公司来了个新人,他好像有社交牛逼症......
- 基于Android4.0版本截屏+node.js服务器接收显示
- 【QGIS基础操作】QGIS插件功能记录
- DDD领域驱动设计落地实践系列:战略设计和战术设计
- 关于Object.defineProperty的几个坑
- arcgis js 4 完美支持mapV ,动画也支持(一)
- c语言snprintf,snprintf()函数使用总结
- 【论文阅读】LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
- 产品思考:如何计算资讯类产品的日活跃用户天花板?