简述一下 GDB 常见的调试命令
(gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h
(gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r
(gdb)start:单步执行,运行程序,停在第一执行语句
(gdb)list:查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数),简写l
说一说ArrayList的实现原理
数组实现、默认容量为10、每次扩容1.5倍
介绍一下Java中的序列化与反序列化
序列化:就是将对象通过流的方式以字节的形式输出写入进文件中。相关流–ObjectOutputStream
反序列化:则是将文件中的字节重构为对象。相关流–ObjectInputStream
两者如果在操作同一个对象,尽可能使用同一个文本地址。并且尽量进行1序1反的操作,防止出现错误。
什么是MVC
MVC是一种设计模式,在这种模式下软件被分为三层,即Model(模型)、View(视图)、Controller(控制器)。Model代表的是数据,View代表的是用户界面,Controller代表的是数据的处理逻辑,它是Model和View这两层的桥梁。将软件分层的好处是,可以将对象之间的耦合度降低,便于代码的维护。
Model:指从现实世界中抽象出来的对象模型,是应用逻辑的反应。它封装了数据和对数据的操作,是实际进行数据处理的地方。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
View:是应用和用户之间的接口,它负责将应用显示给用户和显示模型的状态。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。
Controller:控制器负责视图和模型之间的交互,控制对用户输入的响应、响应方式和流程。它主要负责两方面的动作,一是把用户的请求分发到相应的模型,二是把模型的改变及时地反映到视图上。
加分回答
最典型的MVC就是jsp+servlet+javabean模式。
以JavaBean作为模型,既可以作为数据模型来封装业务数据,又可以作为业务逻辑模型来包含应用的业务操作。JSP作为视图层,负责提供页面为用户展示数据,提供相应的表单来用于用户的请求,并在适当的时候向控制器发出请求来请求模型进行更新。Serlvet作为控制器,用来接收用户提交的请求,然后获取请求中的数据,将之转换为业务模型需要的数据模型,然后调用业务模型相应的业务方法进行更新,同时根据业务执行结果来选择要返回的视图。
当然,这种方式现在已经不那么流行了,Spring MVC框架已经成为了MVC模式的最主流实现。Spring MVC框架是基于Java的实现的MVC框架模式的轻量级框架。前端控制器是DispatcherServlet,映射处理器是HandlerMapping接口实现类,视图解析器是ViewResolver接口实现类,页面控制器是Controller接口实现类。
请你讲讲UML中有哪些常用的图?
UML定义了多种图形化的符号来描述软件系统部分或全部的静态结构和动态结构,包括:用例图(use case diagram)、类图(class diagram)、时序图(sequence diagram)、协作图(collaboration diagram)、状态图(statechart diagram)、活动图(activity diagram)、构件图(component diagram)、部署图(deployment diagram)等。在这些图形化符号中,有三种图最为重要,分别是:用例图(用来捕获需求,描述系统的功能,通过该图可以迅速的了解系统的功能模块及其关系)、类图(描述类以及类与类之间的关系,通过该图可以快速了解系统)、时序图(描述执行特定任务时对象之间的交互关系以及执行顺序,通过该图可以了解对象能接收的消息也就是说对象能够向外界提供的服务)。