某集團公司面試時,總共二面,個人面試通過,對于沒有刷過題目的我,記錄一下自己二面題目
1. 股票的買入和賣出最佳時間
這個比較簡單,無法就是比較兩個數的差值最大,但是這兩個數一定要前面小的后面大的,
比如 kx = [2,4,5,2] ,k=2
則第一天買入,第三天賣出最優:5-2=3;
比如 kx = [4, 7, 5, 10, 2, 7] ,k=2
則第一天買入,第四天賣出最優:10-4=6;
針對此問題,當初利用窮舉便利查找
public static void printMax(int[] rates) {
int max = 0;
int indexX = 0;
int indexJ = 0;
for (int i = 0; i < rates.length - 1; i++) {
for (int j = i; j < rates.length; j++) {
if (rates[j] - rates[i] > max) {
max = rates[j] - rates[i];
indexX = i;
indexJ = j;
}
}
}
System.out.println(String.format("begin:%s,output:%s,menoy:%s", indexX, indexJ, max));
}
2. 螺旋矩陣輸出
比如輸入2,則輸出
12
43
輸入3,輸出
123
894
765
一開始個人采取指標邊界法實作,也就是初始化陣列,然后記錄是否有移動軌跡,然后到達邊界即順時針移動,不走重復路,直到走完所有矩陣,
后來自己去驗證,好難實作,但是在撰寫程序中,發現一個遞回問題,干嘛不把外層脫離掉,再繼續內層操作,因此后來自己撰寫了遞回演算法,最終實作遞回填充后輸出
下面是自己具體實作:
package com.lgh.test;
public class MainApp {
public static void main(String args[]) {
int n = 10;
int[][] nums = new int[n][n];
printN(nums, n, 0, 0, 1);
for (int i = 0; i < n; i++) {
System.out.println();
for (int k = 0; k < n; k++) {
System.out.print(nums[i][k] + " ");
}
}
}
public static void printN(int[][] nums, int n, int indeX, int indexY, int num) {
// 填充行,向右
for (int i = 1; i < n; i++) {
nums[indeX][indexY] = num++;
indexY++;
}
// 填充列,向下
for (int i = 1; i < n; i++) {
nums[indeX][indexY] = num++;
indeX++;
}
// 填充行,向左
for (int i = 1; i < n; i++) {
nums[indeX][indexY] = num++;
indexY--;
}
// 填充列,向上
for (int i = 1; i < n; i++) {
nums[indeX][indexY] = num++;
indeX--;
}
// 獲取子陣列填充
indeX++;
indexY++;
if (n - 2 == 1) { // 當還有元素,則繼續填充
nums[indeX][indexY] = num;
} else if (n - 2 != 0 && n - 2 != 1) {
printN(nums, n - 2, indeX, indexY, num);
}
}
}
3.技術面試題(一二面差不多,二面更加注重業務,但是技術也比較重)
- 自我介紹,介紹最近一年所做的事
- 為什么想跳槽
- 以前專案所用技術簡單介紹和技術實作,針對模塊講解
- AOP實作原理,以及spring aop的原始碼
- spring 回圈依賴
- jdk的多執行緒安全如何設定,以及JUI都有哪些
- tomcat組成成分和tomcat運行模式
- jvm簡單介紹
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271244.html
標籤:其他
上一篇:漫談socket-io的基本原理
下一篇:TypeScript 快速入門
