最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
最新整理电子书
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
x = e.getX();
y = e.getY();
x1 = Math.abs(x - START_X);
y1 = Math.abs(y - START_Y);
xx = x1 % SIZE;
if (xx >= SIZE / 2) {
x1 = (x1 / SIZE) + 2;
} else {
x1 = (x1 / SIZE) + 1;
}
yy = y1 % SIZE;// 判断横坐标是否超过格子长度的一半(防止玩家点偏)
if (yy >= SIZE / 2) {
y1 = (y1 / SIZE) + 2;
} else {
y1 = (y1 / SIZE) + 1;
}
g.setColor(Color.BLACK);
if (bx[x1][y1] == 0) {
bx[x1][y1] = 1;// 表示黑棋
g.fillOval(Math.abs(x1 * SIZE - 25), Math.abs(y1 * SIZE - 25), 50,
50);
count1++;// 所下棋子数加一
GetX[count1] = x1;// 记录第count1步的棋子x值
GetY[count1] = y1;// 记录第count1步的棋子y值
if (CheckRow(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “BLACK WIN!!”);
}
if (CheckList(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “BLACK WIN!!”);
}
if (UpperRight(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “BLACK WIN!!”);
}
if (UpperLeft(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “BLACK WIN!!”);
}
}
g.setColor(Color.WHITE);
WZQAI();// 遍历棋盘
AIcount();// 电脑计算应该下棋的坐标
if (bx[x1][y1] == 0) {
bx[x1][y1] = 2;// 表示白棋
if(x1==0)
{g.fillOval(Math.abs((x1+1)* SIZE - 25), Math.abs((y1+1) * SIZE - 25), 50,
50);}
else
{
g.fillOval(Math.abs(x1* SIZE - 25), Math.abs(y1 * SIZE - 25), 50,
50);
}
count1++;// 所下棋子数加一
GetX[count1] = x1;// 记录第count1步的棋子x值
GetY[count1] = y1;// 记录第count1步的棋子y值
if (CheckRow(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “WHITE WIN!!”);
}
if (CheckList(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “WHITE WIN!!”);
}
if (UpperRight(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “WHITE WIN!!”);
}
if (UpperLeft(x1, y1) >= 5) {
JOptionPane.showMessageDialog(null, “WHITE WIN!!”);
}
}
// 清空权值数组
for (int r = 0; r < weightArray.length; r++) {
for (int c = 0; c < weightArray.length; c++) {
weightArray[r][c] = 0;
}
}
}
public void actionPerformed(ActionEvent e) {
setT(jbu1);
Str = e.getActionCommand();// 读取点击按钮上的字符串
if (“悔棋”.equals(Str)) {
if (g.getColor() == Color.BLACK) {
g.setColor(Color.WHITE);
}
if (g.getColor() == Color.WHITE) {
g.setColor(Color.BLACK);
}
Regret();
ui.repaint();
} else if (“重新开始”.equals(Str)) {
Restart();
ui.repaint();
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public int CheckRow(int x, int y)// 横着五子连成一条直线
{
int count = 0;
for (int i = x + 1; i < bx.length; i++)// 向右判断是否棋子一样
{
if (bx[i][y] == bx[x][y])
count++;
else
break;
}
for (int i = x; i >= 0; i–)// 向右判断是否棋子一样
{
if (bx[i][y] == bx[x][y])
count++;
else
break;
}
return count;
}
public int CheckList(int x, int y)// 竖着五子连成一条直线
{
int count = 0;
for (int i = y + 1; i < bx.length; i++)// 向下判断是否棋子一样
{
if (bx[x][i] == bx[x][y])
count++;
else
break;
}
for (int i = y; i >= 0; i–)// 向上判断是否棋子一样
{
if (bx[x][i] == bx[x][y])
count++;
else
break;
}
return count;
}
public int UpperRight(int x, int y)// 右上到左下五子连成一条直线
{
int count = 0;
for (int i = x + 1, j = y - 1; i < bx.length && j >= 0; i++, j–)// 向下判断是否棋子一样
{
if (bx[i][j] == bx[x][y])
count++;
else
break;
}
for (int i = x, j = y; i >= 0 && j < bx.length; i–, j++)// 向上判断是否棋子一样
{
if (bx[i][j] == bx[x][y])
count++;
else
break;
}
return count;
}
public int UpperLeft(int x, int y)// 左上到右下五子连成一条直线
{
int count = 0;
for (int i = x - 1, j = y - 1; i >= 0 && j >= 0; i–, j–)// 向下判断是否棋子一样
{
if (bx[i][j] == bx[x][y])
count++;
else
break;
}
for (int i = x, j = y; i < bx.length && j < bx.length; i++, j++)// 向上判断是否棋子一样
{
if (bx[i][j] == bx[x][y])
count++;
else
break;
}
return count;
}
public void Regret() {// 悔棋
assert count1 >= 2;
bx[GetX[count1]][GetY[count1]] = 0;
bx[GetX[count1-1]][GetY[count1-1]] = 0;
if (count1 > 0) {
count1 = count1 - 2;
}
}
public void Restart() {// 重新开始
{
for (int k = 0; k <= count1; k++) {
bx[GetX[k]][GetY[k]] = 0;
}
}
count1 = 0;
for (int i1 = 0; i1 < bx.length; i1++) {
for (int j1 = 0; j1 < bx.length; j1++) {
bx[i][j] = 0;
}
}
}
public void WZQAI() {
// 这两个循环遍历整个存储棋子的数组
for (int r = 0; r < bx.length; r++) {
for (int c = 0; c < bx[r].length; c++) {
if (bx[r][c] == 0) {// 判断是否是空位
int ch = 0;// 存储第一次出现棋子的变量
String chessCode = “0”;// 存储统计棋子相连情况的变量
/*
- 横向向左 左面的棋子在chessCode为左方, 右面的棋子在chessCode为右方
*/
for (int c1 = c - 1; c1 >= 0; c1–) {
if (bx[r][c1] == 0) {// 判断是否是空位
if (c1 + 1 == c) {// 判断是否是相邻的
break;
} else {// 判断是否不是相邻的
chessCode = bx[r][c1] + chessCode;// 记录棋子相连的情况
break;
}
} else {// 判断是否是棋子
if (ch == 0) {// 判断是否是第一次出现棋子
chessCode = bx[r][c1] + chessCode;// 记录棋子相连的情况
ch = bx[r][c1];// 存储第一次的棋子
} else if (ch == bx[r][c1]) {// 判断是否是一样颜色的棋子
chessCode = bx[r][c1] + chessCode;// 记录棋子相连的情况
} else {
chessCode = bx[r][c1] + chessCode;// 记录棋子相连的情况
break;
}
}
}
// 根据棋子相连的情况,获取HashMap中存储的权值
Integer weight = map.get(chessCode);
if(null==weight){
System.out.println(" get one null…");
}
else{
int a;
a=weight.intValue();
// 存储入到权值数组中
weightArray[r][c] += a;
}
ch = 0;// 重置到初始状态
chessCode = “0”;// 重置到初始状态
/*
- 横向向右 左面的棋子在chessCode为左方, 右面的棋子在chessCode为右方
*/
for (int c2 = c + 1; c2 <= 15; c2++) {// 判断是是空位
if (bx[r][c2] == 0) {// 判断空位相邻的
if (c2 - 1 == c) {
break;
} else {// 判断空位是不相邻的
chessCode = chessCode + bx[r][c2];// 记录棋子相连的情况
}
}
// 判断是棋子
else {// 判断是第一次出现棋子
if (ch == 0) {
chessCode = chessCode + bx[r][c2];// 记录棋子相连的情况
ch = bx[r][c2];// 储存第一次出现的棋子
} else if (ch == bx[r][c2])// 判断棋子的颜色一样
{
chessCode = chessCode + bx[r][c2];
}// 记录棋子的连接情况
else {// 相邻棋子颜色不一样
chessCode = chessCode + bx[r][c2];
break;
}
}
weight = map.get(chessCode);
if(null==weight){
System.out.println(" get one null…");
}
else{
int a;
a=weight.intValue();
// 存储入到权值数组中
weightArray[r][c] += a;
}
ch = 0;// 重置到初始状态
chessCode = “0”;// 重置到初始状态
}
/*
- 竖向向上 上面的棋子在chessCode为左方, 下面的棋子在chessCode为右方
*/
for (int r1 = r - 1; r1 >= 0; r1–) {
if (bx[r1][c] == 0) {// 判断是否是空位
if (r1 + 1 == r) {// 判断是否是相邻的
break;
} else {// 判断是否不是相邻的
chessCode = bx[r1][c] + chessCode;// 记录棋子相连的情况
break;
}
} else {// 判断是否是棋子
if (ch == 0) {// 判断是否是第一次出现棋子
chessCode = bx[r1][c] + chessCode;// 记录棋子相连的情况
ch = bx[r1][c];// 存储第一次的棋子
} else if (ch == bx[r1][c]) {// 判断是否是一样颜色的棋子
chessCode = bx[r1][c] + chessCode;// 记录棋子相连的情况
} else {
chessCode = bx[r1][c] + chessCode;// 记录棋子相连的情况
break;
}
}
}
// 根据棋子相连的情况,获取HashMap中存储的权值
weight = map.get(chessCode);
if(null==weight){
System.out.println(" get one null…");
}
else{
int a;
a=weight.intValue();
// 存储入到权值数组中
weightArray[r][c] += a;
}
ch = 0;// 重置到初始状态
chessCode = “0”;// 重置到初始状态
/*
- 竖向向下 上面的棋子在chessCode为左方, 下面的棋子在chessCode为右方
*/
for (int r2 = r + 1; r2 <= 15; r2++) {// 判断是是空位
if (bx[r2][c] == 0) {// 判断空位相邻的
if (r2 - 1 == r) {
break;
} else {// 判断空位是不相邻的
chessCode = chessCode + bx[r2][c];// 记录棋子相连的情况
}
}
// 判断是棋子
else {// 判断是第一次出现棋子
if (ch == 0) {
chessCode = chessCode + bx[r][c];// 记录棋子相连的情况
ch = bx[r2][c];// 储存第一次出现的棋子
} else if (ch == bx[r2][c])// 判断棋子的颜色一样
{
chessCode = chessCode + bx[r2][c];
}// 记录棋子的连接情况
else {// 相邻棋子颜色不一样
chessCode = chessCode + bx[r2][c];
break;
}
}
weight = map.get(chessCode);
if(null==weight){
System.out.println(" get one null…");
}
else{
int a;
a=weight.intValue();
// 存储入到权值数组中
weightArray[r][c] += a;
}
ch = 0;// 重置到初始状态
chessCode = “0”;// 重置到初始状态
}
/*
- 左斜向上 左上面的棋子在chessCode为左方, 右下面的棋子在chessCode为右方
*/
for (int r1 = r - 1, c1 = c - 1; c1 >= 0 && r1 >= 0; c1–, r1–) {
if (bx[r1][c1] == 0) {// 判断是否是空位
if (c1 + 1 == c && r1 + 1 == c) {// 判断是否是相邻的
break;
} else {// 判断是否不是相邻的
chessCode = bx[r1][c1] + chessCode;// 记录棋子相连的情况
break;
}
} else {// 判断是否是棋子
if (ch == 0) {// 判断是否是第一次出现棋子
chessCode = bx[r1][c1] + chessCode;// 记录棋子相连的情况
ch = bx[r1][c1];// 存储第一次的棋子
} else if (ch == bx[r1][c1]) {// 判断是否是一样颜色的棋子
chessCode = bx[r1][c1] + chessCode;// 记录棋子相连的情况
} else {
chessCode = bx[r1][c1] + chessCode;// 记录棋子相连的情况
break;
}
}
}
// 根据棋子相连的情况,获取HashMap中存储的权值
weight = map.get(chessCode);
if(null==weight){
System.out.println(" get one null…");
}
else{
int a;
a=weight.intValue();
// 存储入到权值数组中
weightArray[r][c] += a;
}
ch = 0;// 重置到初始状态
chessCode = “0”;// 重置到初始状态
/*
- 左斜向下 左上面的棋子在chessCode为左方, 右下面的棋子在chessCode为右方
*/
for (int r1 = r + 1, c1 = c + 1; c1 <= 15 && r1 <= 15; c1++, r1++) {
if (bx[r1][c1] == 0) {// 判断是否是空位
if (c1 - 1 == c && r1 - 1 == c) {// 判断是否是相邻的
break;
} else {// 判断是否不是相邻的
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
break;
}
} else {// 判断是否是棋子
if (ch == 0) {// 判断是否是第一次出现棋子
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
ch = bx[r1][c1];// 存储第一次的棋子
} else if (ch == bx[r1][c1]) {// 判断是否是一样颜色的棋子
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
} else {
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
break;
}
}
}
/*
- 右斜向上 左下面的棋子在chessCode为左方, 右上面的棋子在chessCode为右方
*/
for (int r1 = r - 1, c1 = c + 1; c1 <= 15 && r1 >= 0; c1++, r1–) // 行r,列c
{
if (bx[r1][c1] == 0) {// 判断是否是空位
if (c1 - 1 == c && r1 + 1 == c) {// 判断是否是相邻的
break;
} else {// 判断是否不是相邻的
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
break;
}
} else {// 判断是否是棋子
if (ch == 0) {// 判断是否是第一次出现棋子
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
ch = bx[r1][c1];// 存储第一次的棋子
} else if (ch == bx[r1][c1]) {// 判断是否是一样颜色的棋子
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
} else {
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
break;
}
}
weight = map.get(chessCode);
if(null==weight){
System.out.println(" get one null…");
}
else{
int a;
a=weight.intValue();
// 存储入到权值数组中
weightArray[r][c] += a;
}
ch = 0;// 重置到初始状态
chessCode = “0”;// 重置到初始状态
}
最后的话
无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。
同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,好了希望这篇文章对大家有帮助!
部分截图:
de + bx[r1][c1];// 记录棋子相连的情况
break;
}
} else {// 判断是否是棋子
if (ch == 0) {// 判断是否是第一次出现棋子
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
ch = bx[r1][c1];// 存储第一次的棋子
} else if (ch == bx[r1][c1]) {// 判断是否是一样颜色的棋子
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
} else {
chessCode = chessCode + bx[r1][c1];// 记录棋子相连的情况
break;
}
}
weight = map.get(chessCode);
if(null==weight){
System.out.println(" get one null…");
}
else{
int a;
a=weight.intValue();
// 存储入到权值数组中
weightArray[r][c] += a;
}
ch = 0;// 重置到初始状态
chessCode = “0”;// 重置到初始状态
}
最后的话
无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。
同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,好了希望这篇文章对大家有帮助!
部分截图:
[外链图片转存中…(img-pxUX2Msr-1714916416114)]