1. 面试官问一台机器内存或者磁盘占用99% 再点一下就挂了,个人刚开始反应内存不足加内存,磁盘不足加磁盘,还有啥办法,有些时候没干过的事一定要大胆,敲命令都敲不成,只能换磁盘了和加内存了,要么停机,
top -o %MEM # 按内存排序进程,记录高占用PID
top -o %MEM -b -n 1 | head -12 | tail -n +7 |awk '{print $NF " " $1}'
free -h
(base) [root@elastic-07 arthas]# free -hl
(base) [root@elastic-07 arthas]# free -h -s 5 -c 3
(base) [root@elastic-07 arthas]# free -h -t
df -h
df -h | grep -E '9[0-9]%|100%' // 查看使用率超过90%的分区
du
du -h --max-depth=2 | sort -hr | head -10
kill -9 <PID> # 优先终止非核心进程(如异常Java进程、失控脚本):ml-cita
2. 最长连续不重复子串
public String longestStr(String str){int len = str.length();int [][] dp = new int [len][len];for(int i = 0; i < str.length(); i++){dp[i][i] = 1;}int max = 0;String s = "";for(int i = 0; i < len; i++){List<Character> list = new ArrayList<>();list.add(str.charAt(i));for(int j = i + 1; j < len; j++){if(list.contains(str.charAt(j))){dp[i][j] = dp[i][j - 1];break;}else{dp[i][j] = dp[i][j - 1] + 1;if(max < dp[i][j]){s = str.substring(i, j);max = dp[i][j];}list.add(str.charAt(j));}}list.clear();}return s;}
2.循环打印ABC ,有没有啥更轻量级的
public static void printABC(){AtomicInteger integer = new AtomicInteger(1);new Thread(new Runnable() {@Overridepublic void run() {while(true){if(integer.get() > 100){break;}if(integer.get() % 3 == 1){System.out.println(integer.get()+":\t A");integer.getAndAdd(1);}}}}).start();new Thread(new Runnable() {@Overridepublic void run() {while(true){if(integer.get() > 100){break;}if(integer.get() % 3 == 2 ){System.out.println(integer.get()+":\t B");integer.getAndAdd(1);}}}}).start();new Thread(new Runnable() {@Overridepublic void run() {while(true){if(integer.get() > 100){break;}if(integer.get() % 3 == 0){System.out.println(integer.get()+":\t C");integer.getAndAdd(1);}}}}).start();}private static Thread t2 = null;private static Thread t3 = null;private static Thread t1 = null;static volatile int i = 1;public static void printABCTwo(){t1 = new Thread(new Runnable() {@Overridepublic void run() {while(i < 100){if(i%3 == 1 && i == 1){System.out.println(i+":\t A");LockSupport.unpark(t2);i++;}else if(i % 3 == 1){LockSupport.park();System.out.println(i+":\t A");LockSupport.unpark(t2);i++;}}}});t2 = new Thread(new Runnable() {@Overridepublic void run() {while(i < 100){if(i % 3 == 2) {LockSupport.park();System.out.println(i + ":\t B");i++;LockSupport.unpark(t3);}}}});t3 = new Thread(new Runnable() {@Overridepublic void run() {while(i < 100){if(i%3 == 0) {LockSupport.park();System.out.println(i + ":\t C");i++;LockSupport.unpark(t1);}}}});t1.start();t2.start();t3.start();}static void printABCThree(){Semaphore s1 = new Semaphore(1);Semaphore s2 = new Semaphore(0);Semaphore s3 = new Semaphore(0);t1 = new Thread(new Runnable() {@Overridepublic void run() {while(i <= 100){if(i%3 == 1) {try {s1.acquire();System.out.println(i+":\t A");s2.release();i++;} catch (Exception e){e.printStackTrace();}}}}});t2 = new Thread(new Runnable() {@Overridepublic void run() {while(i <= 100){if(i%3 == 2) {try {s2.acquire();System.out.println(i+":\t B");s3.release();i++;} catch (Exception e){e.printStackTrace();}}}}});t3 = new Thread(new Runnable() {@Overridepublic void run() {while(i <= 100){if(i%3 == 0) {try {s3.acquire();System.out.println(i+":\t C");s1.release();i++;} catch (Exception e){e.printStackTrace();}}}}});t1.start();t2.start();t3.start();}
4. 线程池有哪些参数
5. LIst 和Map 有啥区别,jdk 1.7 和 jdk 1.8 HashMap 数据结构变化。HashMap 是线程安全的吗?