面试资料整理汇总
这些面试题是我朋友进阿里前狂刷七遍以上的面试资料,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。
面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了
在这里祝大家能够拿到心仪的offer!
三、项目过程(源程序)
===========
要求:写明设计思想、程序的结构、功能关系图、类的说明并按照UML的规范画出类之间的关系图、程序执行流程图,最后是源代码。
1.设计思想
为实现一个完整的雷电游戏,我们首先将游戏划分为几个模块,包括界面背景,敌人和炸弹,我方的英雄和炸弹以及威力巨大的导弹,对我方英雄的行为控制,碰撞和消除,游戏道具和我方英雄生命,分数积累,关卡设置,以及最终大BOSS。
2.程序结构
程序的主要部分为循环结构,每40微秒repaint一次。每次对于地我方碰撞行为的判断为分支结构。
3.功能关系图
4.类的说明
类的名称 | 功能 | 方法 |
abstract public class FlyingObject{} | 建立了一个基类,将游戏界面以坐标的方式划分,以便完成绘制,返回坐标,移动等基本功能。 | FlyingObject(int,int,int,int,BufferedImage); move(long); draw(Graphics g); getX(); getY(); |
AddLife{} | 定义了游戏中的一个道具,用以增加玩家的生命值。 | AddLife(int,int); move(long); |
background{} | 绘制了游戏的基本背景界面 | background(int,int,BufferedImage); move(long); |
Boss{} | 定义游戏最终大BOSS的属性 | Boss(int,int); move(long); |
Enemey{} | 定义敌方的移动行为模式,敌方发射炮弹的位置 | Enemy(int,int,int,int,BufferedImage); move(long); fire(int,int,BufferedImage); |
EnemyBullet{} | 定义敌方炮弹,以及速度 | EnemyBullet(int,int,int,int,BufferedImage); move(long); |
Gamerame{} | 该类构建了游戏框架。 | GameFrame(); main(String[]); |
GameOver{} | 显示游戏结束的界面。 | GameOver(int,int,int,int,BufferedImage) |
Hero{} | 定义我方英雄,发射导弹的位置和发射子弹的位置,以及用键盘控制的英雄移动 | Hero(int,int); fire(); launch():HeroBullet2; move(long); moveUp(int); moveDown(int); moveLeft(int); moveRight(int); |
HeroBullet1{} | 定义我方子弹及其移动速度 | HeroBullet1(int,int); move(long); |
HeroBullet2{} | 定义我方导弹及其移动模式(追踪发射时正前方的敌人轨迹) | HeroBullet2(int,int) move(long,int,int) |
Lives{} | 显示我方英雄生命的图标 | Lives(int,int) |
Resources{} | 加载游戏中所需的全部图像资源 | / |
GameCanvas{} | 定义了游戏初始化时的所有数据内容。设置了游戏的不同关卡。添加了线程,使用户体验更加流畅。提供了对键盘监听的方法,用以控制我方英雄。控制敌人、子弹和道具的刷新。两方的子弹和英雄之间的碰撞效果。 | GameCanvas(); paint(Graphics); keyPressed(KeyEvent); keyReleased(KeyEvent); keyTyped(KeyEvent); |
5.UML图
6.流程图
四、使用说明
=============
光标键移动主角;
武器级别:空格键发子弹、Z键追踪导弹(score>2000);
最后我们该如何学习?
1、看视频进行系统学习
这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:
2、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Spring源码深度解析:
Mybatis 3源码深度解析:
Redis学习笔记:
Spring Boot核心技术-笔记:
3、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**