没想到阿里过了两天就在上班时间打过来了。 推到了当晚下班6点,结果等了一个晚上都没打过来。以为晾凉了。 第二天早上11点左右打过来了。打着撸。。。马上丢下游戏,关闭声音,接起了电话。
你好,请介绍一下你自己,巴拉巴拉。主要强调在打算法竞赛。 然后,自己扯到了自己的三个项目,并表示前两个项目没什么好讲的,技术比较水,主要是现在在写的第三个项目。
你主要写java吧,那我问你几个java的问题。
那你有了解过网络编程吗
你知道spring吧。(这个。。我听了更多次都听不清原来在讲spring)
杂七杂八
没问到什么docker,k8s,redis,mysql,内存操作那一块的内容,自己还是有点准备的。。因为是因为这是所谓的简历筛选面,比较。。。简单吧,接下去要好好看看自己被问懵逼那一块了。
聊完已经50分钟了,马上让我做了个上机测试。 是一个在线编码环境,本以为应该要在上面敲,敲完第一题之后发现并不能编译。。所以匆匆打开编译器把后面几题秒完了。
一段代码中,有注释和代码部分,请用你熟悉的语言 (Java/C++/Golang/Python 都可以),把代码中的注释去除掉。 样例:
/* hello world demo */ #include <stdio.h> // main begins here int main() { printf("Hello, World!"); // print out hello world return 0; } 复制代码
答案:
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean mark = false; while (scanner.hasNextLine()) { String line = scanner.nextLine(); int len = line.length(); for (int i = 0; i < len; i++) { if (line.charAt(i) == '/' && i + 1 < len && line.charAt(i + 1) == '*') { mark = true; } else if (line.charAt(i) == '*' && i + 1 < len && line.charAt(i + 1) == '/') { mark = false; i += 2; } else if (line.charAt(i) == '/' && i + 1 < len && line.charAt(i + 1) == '/') { break; } if (i >= len) { break; } if (mark) { continue; } System.out.print(line.charAt(i)); } System.out.println(); } scanner.close(); } } 复制代码
一个数字不重复且已排好序,但序列有经过轮转改变的数组,如 [2 3 6 8 9 16 25] 可变为 [6 8 9 16 25 2 3],请找到其中最小的元素。 样例: 给出 [6 8 9 16 25 2 3],返回 2
答案:
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] arr = new int[n]; int ans = 0; for (int i = 0; i < n; i++) { arr[i] = scanner.nextInt(); if (i == 0) { ans = arr[i]; } else { ans = Math.min(ans, arr[i]); } } // 虽然很想说,读入就能出答案了,且无法优化 System.out.println(ans); // 但是,如果原本就在内存中。。还是可以优化的 // 这种做法是查找O(logn)的 System.out.println(find(arr, 0, n - 1)); } public static int find(int[] arr, int l, int r) { int mid = l + r >> 1; if (arr[l] <= arr[r]) { return arr[l]; } if (arr[mid] < arr[l]) { return find(arr, l, mid); } else { return find(arr, mid + 1, r); } } } 复制代码
两个线程交替打印1-100的整数,一个打印奇数,一个打印偶数,要求输出结果有序。
这道题有考虑过加锁,但是总感觉加锁哪里怪怪的,因为还是阻止不了某一线程跑的更快一点。好像是。。所以妥妥的用了sleep
答案:
public class Main { public static void main(String[] args) { ThreadFun threadFunOdd = new ThreadFun(1); ThreadFun threadFunEven = new ThreadFun(2); threadFunOdd.start(); threadFunEven.start(); } } class ThreadFun extends Thread { @Override public void run() { try { while (startNumber <= 100) { System.out.println(startNumber); startNumber += 2; Thread.sleep(startNumber); } } catch (Exception e) { } } int startNumber; ThreadFun(int startNumber) { this.startNumber = startNumber; } } 复制代码
哈哈哈,有个大佬吐槽我的sleep。妥妥的更新了代码。用两个锁来解决问题
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/8/13 10:19 # @Author : QuanQqqqq # @Site : # @File : main.py # @Software : PyCharm import threading class Custom(threading.Thread): def __init__(self, lock1, lock2, start_counter): threading.Thread.__init__(self) self.lock1 = lock1 self.lock2 = lock2 self.start_counter = start_counter def run(self): while True: if self.lock1.acquire(): self.lock2.release() print(self.start_counter) self.start_counter += 2 if self.start_counter > 100: break if __name__ == '__main__': counter_lock1 = threading.Lock() counter_lock2 = threading.Lock() counter_lock2.acquire() c1 = Custom(counter_lock1, counter_lock2, start_counter=1) c2 = Custom(counter_lock2, counter_lock1, start_counter=2) c1.start() c2.start() 复制代码
这次二面感觉。。最近状态有点差,准备又不够好orz 一面应该是简历面,面了之后把我的简历丢去了深圳。 打过来的是专门做数据库的一个团队。突然有点慌。会不会数据库考的特别难。。
面了50分钟,最后还是很客气的问了我工作地点有没有问题。就是没有当场把我拒了。说两个星期内如果还有消息还会跟我联系。。希望不挂吧orz。毕竟第一次阿里。新手保护光环~
emmm总之感觉今天。本身状态就不是很好。再加上面试第一句问了句会编译原理嘛就开始懵逼。。史妈妈,我都找工作了,还是没放过我orz。
接下去还是得要抽空看一看自己准备的资料,太多东西都自以为是了,记得不太清楚了。