面试岗位为JAVA开发实习生,一共有两面,第一位是年长的工程师,第二位是年轻的工程师,侧重角度不一样。第一位主要了解你的整体情况和个人想法,以聊天为主。第二位问了很多细节的题目,以问答为主。下面列举一下我遇到的问题
查找出“数学分数最高的人名”,写个sql语句代码,写的时候我使用了in,然后问到in和exist的区别,哪个效率更好?SQL优化了解哪些?
a的值是多少?
答:是“a”,因为java都是值传递,不是引用传递
"a"会被销毁么?
答:不会,因为string的加法运算相当于新建了一个对象,所以不会销毁
面试岗位为后台开发实习生,一共有两个面试官,面试的部门为地图开发部,主要使用语言是C++和Python,后台使用的是flask框架,总体上问的比较笼统,问细节上的不是特别多,有一些问题也没答上来
面试岗位为后台开发实习生,一共有四个面试官,面试的部门为懂车帝,主要是做后台服务的,前三个应该是技术面试,但是第三个面试特别快,前两个面的比较久,第四个是hr面试,聊了聊今日头条的情况,带我参观了下今日头条的工作区,整体环境还蛮不错的,据说提供一日三餐
第一面
第二面
第三面
第四面hr小姐姐
面完一天后生无可恋,回来就睡,太难受了
面试岗位为JAVA的wildfly中间件开发实习生,套路和之前的不一样,是先让做一个工程,使用maven做一个J2EE的hello world,然后做单元测试,改了好久,直到这周才接到面试通知,本来打算直接是外国人的外语面试,但是由于经理很忙,就先由小组的中国人来面试。主要语言就是用JAVA,然后也先讲清楚了要做什么,和其他的面试很不一样,也是怕我没想清楚,毕竟和其他的实习性质有所区别,是在做开源,而且不是做常见的web开发,而是底层中间件web服务器的实现,包括需要测试东西,其实感觉我的个人经历和要求其实并没有很搭配,面试官对web开发相关的也并不是很了解,更多的是希望我沉下心来读很多的源代码,会很枯燥。
这只是第一次面试,还有下一次的意大利视频面试,是和外国面试官交流,压力很大。
第二次面试真是姗姗来迟,其实就是过去和中国面试官和外国面试官一起聊天,问问我几个基本的问题,并没有技术问题,其实就是练习下英语口语,自己渣的可以,至于会不会被录取也不知道,听天由命吧。
面试岗位为JAVA开发实习生,今天已经不是第一次面试了,之前有一次,但是当时没记录,只好记录这次的了
这次面试一共有两面,第一面比较简单问了很多基础问题,基本都能答上来,第二面问了很多细节问题,有很多发现自己理解不深刻,出现了问题,记录几个
投递的邮件有作用了,那边在做区块链医疗,招收实习生
面试岗位
JAVA开发实习生
面试体验
一共有两面,电话面试,第一面考察区块链,第二面考察java基础,问了很久,态度很认真
面试问题
4. hashmap结构
5. get和post区别
面试岗位
JAVA开发实习生
面试体验
非常糟糕!因为之前面试过所以只面了一次,而且在此次面试中知道了京东原来打着提前批的旗号结果是实习不给校招offer,真是套路满满,而且按照时间到了通州的京东之后hr临时预约邀请码,过了半个小时才带我上去,上去面了之后,居然又是半个小时没有人理我了,面试场地已经没有人了而且到了下班时间,然后给hr打电话不接发微信不回,过了十分钟我离开京东大厦,拉黑了京东金融的hr,这次面试导致了我生平第一次拉黑别人
面试问题
不用多说了,四道算法题
第一题
自动售货机里有 N 瓶复制可乐。复制可乐非常神奇,喝了它的人会复制出一个自己来!
现在有 Alice, Bob, Cathy, Dave 四个人在排队买复制可乐。买完的人会马上喝掉,然后他和他的副本会重新去队伍的最后面排队买可乐。
问最后一个买到复制可乐的人叫什么名字?
输入仅有一行,包含一个正整数 N (1 <= N <= 1,000,000,000),表示可乐的数量。
输出喝到最后一罐复制可乐的人的名字。
示例1
输入
8
输出
Bob
说明:
前8个喝到可乐的人依次为:Alice, Bob, Cathy, Dave, Alice, Alice, Bob, Bob.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] names = {"Alice", "Bob", "Cathy", "Dave"};
while (sc.hasNext()) {
long N = sc.nextLong();
long i = 0;
long basic = 4;
while (N > basic) {
N -= basic;
basic *= 2;
i++;
}
int y = (int) Math.ceil(N / Math.pow(2, i));
System.out.println(names[y - 1]);
}
}
}
第二题
四年一度的世界杯又来了!小多在公司内发起了一个票选最强球星的活动。共有 N 个候选球星,每位投票者需要在选票上为每位候选球星评定一个实例等级,等级由英文字母表示,'a' 级最高,'z' 级最低,共26级。
我们称候选球星 X 强于候选球星 Y,当「 X 的评级比 Y 高」的票数高于「 Y 的评级比 X 高」的票数。若一个候选球星强于任一其他候选球星时,则称该球星为“球王”。根据这个规则,至多只会有一个球王。需要注意的是也可能没有球王。现在给出所有 M 张选票,请你帮小多判断一下哪位候选球星是球王。
第一行包含2个整数 N、M,分别表示候选球星数量以及选票数量。接下来有 M 行,每行是一个长度为 N 的字符串,每个字符串表示一张选票上的信息。每个字符串的第 k (0 <= k < N) 个字符,
表示这张选票对第 k 个候选球星的评级。
数据范围:
1 <= N <= 50
1 <= M <= 50
字符串只包含小写英文字母(a-z)。
若有球王,则输出一行仅包含一个整数 X,表示编号为 X (0 <= X < N) 的候选球星是球王;若没有球王,则输出一行仅包含一个整数 -1 。
示例1
输入
4 3
acbd
bacd
bdca
输出
0
示例2
输入
4 1
acad
输出
-1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int N = sc.nextInt();
int M = sc.nextInt();
sc.nextLine();
String[] notes = new String[M];
for (int i = 0; i < M; i++) {
if (sc.hasNext())
notes[i] = sc.nextLine();
}
int[][] matrix = new int[N][N];
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
char a = notes[i].charAt(j);
for (int k = j + 1; k < N; k++) {
char b = notes[i].charAt(k);
if (a < b) {
matrix[j][k] += 1;
} else if (b < a) {
matrix[k][j] += 1;
}
}
}
}
boolean flag = true;
for (int i = 0; i < N; i++) {
flag = true;
for (int j = 0; j < N; j++) {
if (i == j)
continue;
if (matrix[i][j] <= matrix[j][i]) {
flag = false;
break;
}
}
if(flag) {
System.out.println(i);
break;
}
}
if(!flag)
System.out.println(-1);
}
}
}
第三题
有N个货物(0<=N<=1024),每个货物的重量是W(100<=W<=300)。如果每辆车最多的载重为300,请问最少需要多少辆车才能运输所有货物。
一行输入,包含N个正整数,表示每个货物的重量,空格分隔。
一行输出,包含一个整数,表示需要的车辆数。
示例1
输入
130 140 150 160
输出
2
第四题
A 国的手机号码由且仅由 N 位十进制数字(0-9)组成。一个手机号码中有至少 K 位数字相同则被定义为靓号。A 国的手机号可以有前导零,比如 000123456 是一个合法的手机号。小多想花钱将自己的手机号码修改为一个靓号。修改号码中的一个数字需要花费的金额为新数字与旧数字之间的差值。
比如将 1 修改为 6 或 6 修改为 1 都需要花 5 块钱。给出小多现在的手机号码,问将其修改成一个靓号,最少需要多少钱?
第一行包含2个整数 N、K,分别表示手机号码数字个数以及靓号至少有 K 个数字相同。第二行包含 N 个字符,每个字符都是一个数字('0'-'9'),数字之间没有任何其他空白符。表示小多的手机号码。
数据范围:
2 <= K <= N <= 10000
第一行包含一个整数,表示修改成一个靓号,最少需要的金额。第二行包含 N 个数字字符,表示最少花费修改的新手机号。若有多个靓号花费都最少,则输出字典序最小的靓号。
示例1
输入
6 5
787585
输出
4
777577
说明:
花费为4的方案有两种:777577与777775,前者字典序更小。
菜鸟网络的JAVA开发岗
工作内容为Java后台的业务开发,还有一部分C++工作,聊了大概1个小时,发现自己还是有很多基本的问题没搞清楚,有很多收获
阿里健康的JAVA开发岗
又发现了很多技术盲点,整体感觉良好
前端开发
首先很奇怪不知道为什么会被分到前端开发去,因为我并没有投递这个岗位,可能是放到简历池被面试官挑选的,前端我并没有准备太多所以回答的并不好,这里提醒面试者把求职意向写好,面试官很认真,自己答得不好,凉了
题目都是和考公务员的题目很像,包括选择题、逻辑题等,反而技术题目很少
应用开发(偏核心系统智能运营)
面试的时候发现人家都是穿正装来的,尴尬,都没准备衣服,得亏换了个衬衫,要不然太尴尬,整体面试安排和互联网公司大不相同
后台开发
整体体验很好,早上去面试还准备了零食,面试官给人的感觉很舒服,尤其是第二面的时候,感觉确实在了解你整个人的技术水平和项目经历,而不是很多面试官就着自己懂得问题去问,或者就问自己准备好的问题,被尊重的感觉油然而生
岗位投递的是杭州研究院,先要经过笔试的洗礼,笔试的内容分为选择题40分,简答题20分和编程题60分,选择题和简答题记不太住了,主要写写编程题吧
输入描述:
第一行 n, k (1 <= n, k <= 10^5),表示这堂课持续多少分钟,以及叫醒小易一次使他能够保持清醒的时间。
第二行 n 个数,a1, a2, ... , an(1 <= ai <= 10^4)表示小易对每分钟知识点的感兴趣评分。
第三行 n 个数,t1, t2, ... , tn表示每分钟小易是否清醒,1表示清醒。
输出描述:
小易这堂课听到的知识点的最大兴趣值
示例1
输入
6 3
1 3 5 2 5 4
1 1 0 1 0 0
输出
16
输入描述:
第一行一个数n(1 <= n <= 10^5)。
第二行n个数ai(1 <= ai <= 1000),表示从左往右数第i堆有多少苹果
第三行一个数m(1 <= m <= 10^5),表示有m次询问。
第四行m个数qi,表示小易希望知道第qi个苹果属于哪一堆。
输出描述:
m行,第i行输出第qi个苹果属于哪一堆。
示例1
输入
5
2 7 3 4 9
3
1 25 11
输出
1
5
3
示例
输入
2 2 6
输出
zzaa
2个a和2个z排列,aazz,azaz,azza,zaaz,zaza,zzaa,第6个排列数就是zzaa
阿里健康的JAVA开发岗
这次打电话又面试了很久,问了很多经典的问题,但很多又记得很模糊了,尴尬,本来都准备过的,可以答得很流利的
搜索部
后来了解到是做离线的搜索构建,也就是倒排索引,主要写C++,去了现场我就经历了一次面试,就回了,感觉没戏,人家对我并不感兴趣,因为我主要准备的Java,不过面试官态度很和蔼一直在微笑
show global variables like 'wait_timeout'
,这个是mysql的配置数据库连接超时的参数,文章Indeed实在太诱人了,但是做了四道算法题之后发现太难了,果然这样的公司抢手,算法题难度也非常大,好好刷题了要
1.判断正整数是否是对称数,如3,123,121,12321。不能把整数转为字符串来判断。//返回 1:对称,0:不对称
int reverse( int value){
int res = 0;
while (value){
res = res * 10 + value % 10;
value /= 10;
}
return res;
}
int ismirror( int value ) {
if(value == reverse(value)){
return 1;
}else{
return 0;
}
}
2.有一个链表,反转链表中第m到第n个元素。1 <=m <=n <= 链表长度
例子 1->2->3->4->5->6->null, m=2, n=4,反转后1->4->3->2->5->6->null
struct LinkNode {
int value;
struct LinkNode * next;
};
LinkNode * reconstruct(LinkNode * head, int m, int n) {
ListNode *res = new ListNode();
res->next = head;
ListNode *tmp = res;
for(int i=0;i<m-1;i++){
tmp = tmp->next;
}
ListNode *p = tmp->next;
for(int i=0;i<n-m;i++){
ListNode *t = p->next;
p->next = t->next;
t->next = tmp->next;
tmp->next = t;
}
return res->next;
}
3.有一个二叉树,每个节点的值是一个整数。写一个函数,判断这颗树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。存在返回1,否则返回0。
struct TreeNode {
int value;
struct TreeNode * left, * right;
};
int haspath( struct TreeNode * root, int value ) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL && value - root->val == 0) {
return 1;
}
return haspath(root->left, value - root->val) || haspath(root->right, value - root->val);
}
4.实现x^n次方,时间复杂度要O(logN)
double pow(double x, int n)
{
Double res = 1;
if(n == 0)
return res;
int tmp = n;
while(tmp != 0)
{
if((tmp & 0x1) != 0)
res *= x;
x *= x;
tmp /= 2;
}
return res;
}
杭州研究院
这次面试可以说是我面试体验目前为止倒数top的,首先最重要的是这次面试没通过,其次要去杭州只报销去的路费,相当于自己要花将近700元在回来的路上,最关键的是第二面的面试官整体上不愿意和我交流,甚至连我的项目和研究经历都没问,只让我自己讲讲,经常面试到我回答完问题就不说话,好像不知道面试我什么一样,上来问我家在哪儿将来打算去哪儿工作,总体来讲面试官给我的感觉是,最开始就没想让我通过的心态去面试的,个人觉得作为技术面试官,这样的表现是非常不合格的,也让我对网易互联网的印象大打折扣
WXG事业部后台开发
面试官非常nice,之前的笔试也是他通知我做的,还加了我的好友,每次面试前都会提前通知我一下,人也很和气,面试的时候全部的问题都是针对我的个人项目,问的非常详细,每个都是,并没有问一些基础语法或者一些基本课程的理解,虽然在实现的细节点上并没有特别考察我,但是从整体的项目上考察了我的理解和是否真的做了那么多,感觉还是很受尊重的,因为其他面试能聊两个项目也就最多了
全部是关于项目上的,就不列出来了
Java开发工程师
阿里的面试整体感觉都蛮好的,这次面试官也很不错
Java开发工程师
这次是到阿里健康里面去面试,面试官应该是级别较高的人,总体体验还是很好的
//请在1小时内完成以下4道题目,完成后请在题板发送消息。
//答案直接写在此题板上,面试官可以实时看到。
//====
1.有一个二叉树,每个节点的值是一个整数。写一个函数,判断这颗树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。存在返回1,否则返回0。
struct TreeNode {
int value;
struct TreeNode * left, * right;
};
函数定义如下int haspath( struct TreeNode * root, int value )
int haspath( struct TreeNode * root, int value){
if(root == NULL){
return 0;
}
if(root->left == NULL && root->right == NULL && value-root->value==0){
return 1;
}
return haspath(root->left,value - root->value) || hashpath(root->right,value - root->value);
}
void Inorder(BT *root, vector<BT*>& res){
if(root){
Inorder(root->left,res);
res.push_back(root);
Inorder(root->right,res);
}
}
void BuildInorderThreadedBT(BT *root){
vector<BT*> res;
Inorder(root,res);
int count = res.size();
cout << count <<endl;
if(count<=1)
return;
res[0]->next = res[1];
for (int i = 1; i < count-1;i++)
{
res[i]->prev = res[i-1];
res[i]->next = res[i+1];
}
res[count-1]->prev = res[count-2];
}
3.某一个大文件被拆成了N个小文件,每个小文件编号从0至N-1,相应大小分别记为S(i)。给定磁盘空间为C,试实现一个函数从N个文件中连续选出若干个文件拷贝到磁盘中,使得磁盘剩余空间最小。
函数定义如下:
int MaximumCopy(std::vector<size_t> s, size_t C, size_t &start_index, size_t &end_index);
函数返回值为剩余空间,如无解返回-1。
其中start_index, end_index为文件的编号。
如N=5,S = {1, 2, 3, 5, 4},C = 7
结果为p = 0, q = 2, return = 1
int MaximumCopy(std::vector<size_t> s, size_t C, size_t &start_index, size_t &end_index){
int count = s.size();
size_t min = C;
size_t tmp_start_index = 0;
size_t tmp_end_index = 0;
size_t sum = s[0];
while(tmp_start_index<count){
if(C - sum < 0){
sum -= s[tmp_start_index];
tmp_start_index++;
if(tmp_start_index > tmp_end_index)
tmp_end_index = tmp_start_index;
}
else if(C - sum < min){
min = C - sum;
start_index = tmp_start_index;
end_index = tmp_end_index;
tmp_end_index++;
sum += s[tmp_end_index];
}
else{
tmp_end_index++;
sum += s[tmp_end_index];
}
}
return min==C?-1:min;
}
--
4.公司减员增效,希望得到最大的收益(在收益相同的情况下,取裁员人数最小的方案)。假设有n个员工,每个员工的收益为cost[i]( cost>0说明为收益为正,cost<0为收益为负)。员工关系有m条,m[i]={ x,y}表示x是y的上级,如果员工的所属的上级被拆掉,那么员工也要被拆掉。现假设员工只属于一个上级,求解裁员后公司的最终收益值result,裁员员工id列表fire_list?
struct Relation{
int x;
int y;
};
struct Tree{
int up; //上级
int *down; //下级
}
Tree* createTree(const Relation* m, int m_size){
for(int i=0;i<m_size;i++){
//构建森林,可以考虑并查集
}
}
void preOrder(Tree **root, int& result, int* fire_list){
for(int i=0;i<root.size();i++){
if(root[i]){
//计算所有链上的最大和且和大于0
res = cal();
sum = calSum();
//保存结果
fire_list.push_back(res);
result += sum;
}
}
}
void caiyuan(const int* cost,int cost_size, const Relation* m, int m_size,int& result, int* fire_list, int& fire_size){
//构建森林,每棵树是多叉树
Tree **root = createTree(m, m_size);
//分别对每棵树进行深度遍历,遍历每条链表上从头开始的最大和且和大于0,如果每条都小于0那么整个树就都放弃掉
preOrder(root, result, fire_list);
}
Java开发工程师
整个过程从上午10点开始一直到下午5点,上午介绍了完美世界的情况,下午面试,等了好久只面了一面,问的问题都非常细,感觉自己表现并不好
Java开发工程师
一共有两面,加上一面hr,面试官都很随和,整体面试感觉还不错
第一面
第二面
hr面
后台开发工程师
只有一面,感觉面试官对于我并不感兴趣,整体技术也偏C++,面试官人很随和,但是问题描述不清楚,耽误了一些时间,而且感觉导致他对我评价变低
以 2018.08.28 为时间节点,我要开始好好找工作了!!!
JAVA开发工程师
面试官电话来的很晚,基本是要睡觉了,可以感觉出来阿里的工作不轻松呀
后台开发工程师
这次面试又发来了三道题,然后电话问了问项目,最后一道题还是好难啊
注:进阶部分不一定要实现。
为了提高效率,可以在个人本地电脑的编译器上验证代码,并把解题代码和验证代码都贴上来。
1.对于一棵满二叉排序树深度为K,节点数为 2^K - 1 ;节点值为 1至 (2^K-1)。
给出K和任意三个节点的值,输出包含该三个节点的最小子树的根节点值
样例输入:4 10 15 13
样例输出:12
#include <string.h>
#include <errno.h>
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
freopen("/Users/guanpengchn/Code/test/c/data.txt","r",stdin);
int K;
while(cin>>K){
int sum = (1<<K) - 1;
int node[3];
int link[100];
int res=0;
for(int i=0;i<3;i++){
cin>>node[i];
int root = (sum + 1)/2;
int k = K-1;
if(i==0){
for(int j=0;j<K;j++){
link[j]=root;
if(root>node[i]){
root -= 1<< (k-1);
}else if(root < node[i]){
root += 1<< (k-1);
}else{
break;
}
k--;
}
}else{
for(int j=0;j<K;j++){
if(link[j]==root && link[j]!=res){
res=link[j];
}else{
break;
}
if(root>node[i]){
root -= 1<< (k-1);
}else if(root < node[i]){
root += 1<< (k-1);
}
k--;
}
}
}
cout<<res<<endl;
}
return 0;
}
2.回形矩阵是由1开始的自然数顺时针排列成的一个n*n矩阵,n为奇数.
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
要求打印出它的一个子矩阵(m*m),例如在n=5的矩阵里面以起始点 xy( 2,2 ) 打印m = 2的正方形,则输出:
17,18
24,25
进阶: 是否可以应对超大规模的情况,例如n > 10000000,m<100的场景
#include <string.h>
#include <errno.h>
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
freopen("/Users/guanpengchn/Code/test/c/data2.txt","r",stdin);
int n,x,y,m;
while(cin>>n>>x>>y>>m){
int index, i, j;
int matrix[100][100];
for(int i=0;i<100;i++){
memset(matrix[i],0,100*sizeof(int));
}
i = j = 0;
index = 1;
while(index <= n*n){
while(matrix[i][j] == 0 && j < n)
matrix[i][j ++] = index ++;
j --;
i ++;
while(matrix[i][j] == 0 && i < n)
matrix[i++][j] = index ++;
i --;
j --;
while(matrix[i][j] == 0 && j >= 0)
matrix[i][j --] = index ++;
j ++;
i --;
while(matrix[i][j] == 0 && i >= 0)
matrix[i --][j] = index ++;
i ++;
j ++;
}
for(i=x-1; i<x-1+m; i++){
for(j=y-1; j<y-1+m; j++){
cout<<matrix[i][j]<<' ';
}
cout<<endl;
}
}
return 0;
}
3。 一个页面有两个广告位,现有四个广告需要展示,实现一个算法输出需要展示的两个广告
要求:
a.输出的两个广告不能相同;
b.多次调用输出的四个广告的概率为:1:2:3:4 (4个广告用整形1-4来表示)
c.进阶:是否存在通用解,n个广告,概率为p1:p2:...:pn
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include<vector>
using namespace std;
int gen(int n) { // 在 [1, n] 区间等概率的选个 1 个随机数
int res = 0;
for(int i = 1; i <= n; i++) {
if((rand() % i + 1) == i) { // 产生一个 [1, i] 区间的随机数
res = i;
}
}
return res;
}
int sum[4]={0};
vector<int> save;
vector<int> a;
void solve() { // num: 广告数
int len = a.size();
int pos1;
int pos2;
if(!save.empty()){
pos1 = save.back();
pos2 = gen(len);
}else{
pos1 = gen(len);
pos2 = gen(len);
if(a[pos1 - 1] == a[pos2 - 1])
save.push_back(pos1);
}
while(a[pos1 - 1] == a[pos2 - 1]){
save.push_back(pos2);
pos2 = gen(len);
}
if(!save.empty())
save.pop_back();
sum[a[pos1 - 1]-1]++;
sum[a[pos2 - 1]-1]++;
cout << a[pos1 - 1] << ", " << a[pos2 - 1] << endl;
}
int main() {
for(int i = 1; i <= 4; i++) {
for(int j = 0; j < i; j++)
a.push_back(i);
}
srand((unsigned)time(0));
for(int i = 0; i < 10000; i++)
solve();
for(int i=0;i<4;i++){
cout<<sum[i]<<' ';
}
}
JAVA开发工程师
面试官中午打的电话,简单问了问项目,可能是希望我去实习,这样稳妥一点
JAVA开发工程师
HR姐姐打电话过来问我的情况,整个过程没有压力面,感觉还是挺开心的
JAVA开发工程师
现场面试,结果还是只有一面,估计悬啦,和面试官讨论了很久算法题,过程就是我先去做然后面试官不断提示,到最后优化的地方自己思路还是卡住了
开发工程师
我参加的是微策略的提前批沙龙,感觉做的很好,第一天是企业介绍和群体面试,玩了很多游戏,第二天是正式的面试,有两轮技术面和一轮final面试,如果面试的不好可能一轮就结束了,微策略公司让我觉得比较好的地方在于地处杭州,生活压力相对会小,同时保持了外企不加班的风格,还有就是作为美国的企业杭州是第二大开发总部,会有很多技术性的工作,和一些外企只把测试和技术支持放到国内是有区别的,感谢提供了两天的酒店住宿和往返路费报销,面试题目不可透漏,希望有更多同学去体验~~
后台开发工程师
5道选择题,3道简答题和3道算法题,整体难度不大
全栈开发工程师
第一面主要是面了两道算法题,第二道题没想清楚,第二面是从项目和工程的角度来面试的,主要看我的知识面和能力吧,总体体验还挺好的,也是第一次面试全栈开发的岗位,和面试官讨论了一下如何理解全栈工程师的,为什么图森会有这样的岗位招聘
后台开发工程师
没想到之前腾讯的面试进度变成GM/面委会之后果真回退成复试了,,,这还能回退,这次还是复试,加上这次已经四次了,这次没有做题问了很多C++的知识,被问的很晕
后台开发工程师
一共两面,第一面面试不太好,很久不刷算法题了,很常见的题被问得很蒙,第二面问了很多简单的算法题,整体回答的还可以
平台研发工程师
其他的笔试没怎么写过体验,网易游戏的体验感还挺强,因为要去现场笔试,人挨着人,每一列都是不同的岗位,卷子也不一样,确实没办法抄袭,我去的那场卷子发的比较慢,定的是14:00-17:00笔试,但是卷子发了有半个小时,不过时间也向后延长了,题目是前60道题为不定项选择和填空,一道题一分,只要不是标准答案就没有分,2道简单题各8分,2道编程题各12分,总分100分
(2) 请统计有多少个个变量改变了bool值同时对整个公式没影响
平台研发工程师
电话面试,面试官非常随和,而且经常笑意满满,让我感觉通不过电话打得也挺开心的,哈哈,问了很多工程上的问题,基础的内容并没有特别多
后台开发工程师
题目挺难的,5道题只AC了2道,估计够呛有面试机会
平台研发工程师
面试的部门主要是写nodejs的,问的问题也基本都和js有关系,没有问算法题,主要是在讨论js,看我js的水平,然而我并没有准备,所以很多答的并不理想和准确
全栈开发工程师
在线写了两道算法题,第一个题很常规,第二个题就被难住了,然后问了问个人意愿想学什么包括想在哪儿工作
给出一个只有正数的数组,和目标值target,找到大于target的连续子数组最小和
//a[] 34 564 -7 23 76 -565 324 768 23 67
//target = 234
//l,r sum = a[l] + ..+a[r] >= x && minSum
int query(int a[], int x){
if(a.length==0){
return 0;
}
int minSum=0;
int tmpSum=a[0];
int front=0;
int end=0;
boolean flag=true;
while(end<a.length){
if((tmpSum<minSum||flag) && tmpSum>=x){
flag=false;
minSum = tmpSum;
front++;
if(front>end){
end++;
}
tmpSum -= a[front-1];
}else{
end++;
tmpsum += a[end];
}
}
return minSum;
}
如果数组中存在负数呢?
构建二叉搜索树,每个节点上都是从头开始的子数组和,再遍历数组,去加搜索树上的值,找到符合条件的值,遍历时间要nlogn
全栈开发工程师
主要问了问整体情况,还有一些知识点,讲了很多关于工作的内容
后台开发工程师
一共三轮面试,考察的问题并不是很难,每轮都有code,难度不大,但是对code的检查都很仔细
秋招投的基本都是Java研发岗,分享一下自己的复习策略
如果是面试java开发的话,推荐JavaGuide这个仓库,里面覆盖的还比较全面
其实最开始我是拒绝看书的,因为觉得太慢,而且可能记不住,所以我使用了初级策略,但是在面试过程中有几件事情让我发现了秋招仅仅依靠面经是无法拿到大厂offer的
问题如下:
分析下上面几个问题,可以得到下面几个结论:
所以只看面经很容易被识别出来,然后被面试官吊打,我只举了面试过程中遇到的5个较深入的问题,还有更多的问题我没列出来,而且可以认为有几个问题没答出来,就少了几个offer,今年的面试已经很难有问题不会可以给offer的空间了。
基于上述结论我推荐几本我看过的书,都是豆瓣评分很高很经典的书籍,分别用于补充不同的部分,所有的书籍均可下载,下载链接,该推荐基于已经学过Java有一定编程能力的同志。
推荐阅读顺序:
Java高并发程序设计 -> JDK -> 深入理解Java虚拟机 -> MySQL必知必会 -> Redis开发与运维 -> TCP/IP编程 -> 图解HTTP -> Head First 设计模式 -> Java 8实战 -> 大型网站技术架构 -> 高性能MySQL -> 其他
书籍详情:
建议:学一个工具的时候,需要准备两本书,第一本书是讲如何使用的,第二本书是讲内部原理的,建议先将第一本书看个大概,再去开始做项目,一边做一边巩固,同时开始学习实现原理。