2019春招笔试/面试心得

临近毕业,最近笔/面了几家公司,挺有感触,记录分享一下。

笔试部分

字节T动(Java)

大厂笔试往往是圈内的焦点,今年zjtd后端笔试,四道基础算法水题,全过的人一大片,但是我不一样,只AC两题,后悔之前没有跟着大佬坚持走算法的道路。

字节跳动后端开发(C++/Java同题)

恒S电子(Java)

作为阿里系的成员,笔试形式却跟其他"妖艳贱货"不一样,当大厂们纷纷享受着在线笔试第三方托管(牛客网、百一测试),恒生却在各大高校(浙大玉泉、杭电本部、工大屏峰)进行现场考试,这也算近距离体验学渣跟大牛的区别。

笔试分为:不定项基础选择题、不定项C/Java基础选择题(二选一)、数据库操作题、编程题、算法题。接下来是性格测试18题(不记分)、逻辑智力题(计分)

虽然我没有拍下我的试卷(因为大佬半小时交卷时特地问过能不能把试卷带走,监考明确拒绝了)。大家可以自行体验一下往届题目。

回忆下题目,记不全或记错,大家可以指正一下哈:

数据库:给你三张表,分别为user(userId,userName,account),accoInfo_201811(userId,account,date),accInfo_201812(userId,account,date)

  • 给某用户充值200块(user表)

  • 查询某用户201811最高消费

  • 给xx表加个外键

  • 查询某用户11、12月的总消费

编程题:给了一个接口,定义两个方法putTask()和getTask(),现在有三个Task对象,让我们实现队列。按队列1、队列2、队列3的顺序放入,按队列1、队列2、队列3的顺序拿出

算法题:手撸代码,实现遍历二叉树

T花顺(Java)

在看了ths在知乎上的风评后,本着有机会就得抓住的理念,我打开了他们自家的考试系统,每个题都有编号而且都不小,估计题库挺多的。之前网上找到的往年题目,大多数C++/客户端/Java混杂的题目,而且官方还确认了,这是校招都需要具备的能力2333。但是打开后发现没啥越界的题目,都是一些Java基础,记录了几个,如下:

//以下Java代码中,正确的有几个
// 1.
public class Something{
  void doSometing(){
    private String s = "";
    int l = s.length();
  }
}
// 2.
abstract class Something{
  private abstract String doSometing();
}
// 3.
public class Something{
  public int addOne(final int x){
    return ++x;
  }
}
// 4.
abstract class Name{
  private String name;
  public abstract boolean isStupidName(String name);
}
//以下代码打印的结果是什么
class PrintTest{
  try{
    String[] codeList = {"01","02","03","04"};
    Map map = new TreeMap();
    map.put(3,3);
    map.put(3,3);
    map.put(2,2);
    map.put(4,4);
    map.put(1,1);
    for(int i : map.keySet()){
      System.out.println(map.get(i));
    }
    System.out.println(codeList(4));
  }catch(Exception e){
    System.out.println("Error");
  }
}   
//下面程序的运行结果是什么
class HelloA{
  public HelloA(){
    System.out.println("HelloA");
  }
  {System.out.println("I'm A Class");}
  static {System.out.println("static A");};
}
public class HelloB extends HelloA{
  public HelloB(){
    System.out.println("HelloB");
  }
  {System.out.println("I'm B class");}
  static {System.out.println("Static B");}
  public static void main(Stirng args[]){
    new HelloB();
  }
}
private class Base{
  Base(){
    int i = 100;
    System.out.println(i);
  }
}
public class Pri extends Base{
  static int i = 200;
  public static void main(String args[]){
    Pri p = new Pri();
    System.out.println(i);
  }
}
// A.这段代码不能通过编译
// B.输出200
// C.输出100和200
// D.输出100
// 下面的方法,输入数字2,返回值是多少
static int getValue(int i){
  int result = 0;
  switch(i){
    case 1:
      result = result * 1;
    case 2:
      result = result * 2;
    case 3:
      result = result * 3;
    case 4:
      result = result * 4;
  }
  return result;
}
// A. 2
// B. 4
// C. 12
// D. 18
//下列程序输出什么
public class ArrayTest{
  public static void main(String args[]){
    char[] ch1 = new char[2];
    ch1[0] = 'a';
    ch1[1] = 'b';
    
    char[] ch2 = new char[2];
    ch2[0] = 'a';
    ch2[1] = 'b';
    
    System.out.println(ch1.equals(ch2));
  }
}

还有一些进阶题,比如算法之类的。

PHP

PHP更让人感觉是业务方面和基本功方面的笔试,我面了两家公司,第一家考的是数组的转化:

$arr1 = [
  "color" => "黄色",
  "color" => "红色",
  "color" => "紫色",
  "size" => [
    "length" => 100,
    "height" => 100,
  ]
];
//变为
{
  "len" : 100,
  "height" : 100,
  "color" : {
    0 : "黄色",
    1 : "红色",
    2 : "紫色"
  }
}

第二家考的简单的业务处理和基本功

//现在有一个问题的答案为A,B,C,D,E,F,正确答案为C,E。学生作答的答案保存在"answer.txt"文件中,个数如下
// 1:A,B
// 2:B,C
// 3:A,B,C
// ...一共20条
// 要求统计各个答案出现的次数、答对的人的学号、漏选的人的学号

面试部分

面试基本不会缺少的:自我介绍、项目经验。

自我介绍:大多数时候HR会在你自我介绍的时候查看你的简历,可能之前看过或者在找提问点。建议提前写一个稿子,2-5分钟皆可。介绍的时候观察HR的变化,如果她一直在看你的简历,说明她可能之前没有事先仔细看过,那你可以多介绍一些,让她有充足的时间看。如果HR看完了,目光转移到你身上,那么她已经做好提问的准备,你可以适当忽略掉一些无关紧要的介绍,早点进入问答环节。如果HR从一开始就在认真听你的自我介绍,那就尽可能表现最好的一面,因为她是真的想从你的介绍中分析你的性格、特征等。

项目经验:项目经验很多时候,都会有包装的情况存在。但是作为一个必问的环节,包装的时候也不可太过分。不懂技术的纯HR可能不会对你的项目进行发问,但是也不排除有开发背景的HR,可能在HR面,就你不深入的环节,进行致命提问。但是不管是哪个,总归会有技术面,是不是过度包装,一问便知。所以大家尽可能的把最了解的部分写上去噢。

然后是应届毕业生,必然会提问的部分,就是基础

Java

  • Java8的新特性是什么?你是否使用过?

  • 抽象类和接口的区别?

  • HashMap的特点是什么?底层是如何实现的?

  • Map有几种遍历方式?

  • List的特点是什么?底层是如何实现的?

  • List和Set有什么区别?使用上有什么不一样?

  • String类是否能被继承?

  • 哪些类不能被继承?

  • Cookie和Session的区别?如何一起使用来保持登陆状态?

  • 数据库调优了解多少?索引?

  • 分布式了解多少?

  • Redis了解多少?

  • 缓存了解多少?

PHP

  • PHP7新特性是什么?有使用过嘛?

  • PHP的基本类型有哪些?

  • PHP的静态变量和全局变量有什么区别?

  • HTTP常见状态码?

  • 常见Linux操作?

  • 实现某一功能时MySQL语句怎么写

  • 框架了解程度

  • 数据库调优

  • API如何保证安全

技术对你的项目进行提问

这方面基本上是考验你平时是否有所积累,像我上一个项目也有半年多了,没有把开发过程中的问题记录下来,你很难去临时想象你当时碰到的是什么问题,怎么解决。你只能说出很笼统的回答,可能会导致技术人员对你项目的真实性存疑。

技术人员对项目的提问几乎都是深入性的,比如说你在项目中写了,使用SpringBoot框架,他会由浅入深地问你,为什么要选SpringBoot框架?(因为启动快,配置简单)配置简单,那它是通过什么机制来使配置生效?(……)如果你回答不上来,就继续找,比如说看到你写了Cache,就问你,SpringBoot的缓存机制是怎么实现的?总之很多情况下,技术人员会对你所了解的框架进行更深层次的提问。

HR面

HR面,在我看来是双向的,HR可以从你的言语神态中观察你的意向和状态,你也可以在HR的话语和神态中观察她的意向和状态。比如我之前面的一个外包公司,一进去就直接跟我聊加班、外包、技术培训、入职初期工作,你可以很明显的感受到公司用人的急迫,试探你的底线。在我提问的环节,我经常会问:公司一天的工作是怎么样的?HR在回答的时候,你也可以从字里行间感受到,他是否受到了公司的关怀,对公司的态度如何。也有资深HR,能很好的引导谈话的内容,并总结你说过的话,分析出你的性格,技术深度等特点,并给予你一些职业方向上的指点。但是无论如何,面试的过程都是无害的,一定要放好心态,不卑不亢,才能稳操胜券。

总结

在最后,面试/笔试了这么多家,也在看准、知乎上参考各家的评论,实地了解公司真实的开发环境。对我个人而言,心中有一个不小的疑问。一方面像一些私企,规模大,但是技术为其他产业服务,内部人际关系复杂,开发环境落后,技术停滞不前,虽然福利薪资不成问题,但是总归少了互联网的氛围和气息。另一方面,创业性质的小团队,可能给不出豪华的福利薪资,但是团队激情方面着实不错。另外部门之间的扁平化管理、团队年龄无代沟、互联网气息、对技术的狂热追求,这些都是很吸引年轻人的地方。至于这么选择,相信大家都有自己的想法。

你可能感兴趣的:(2019春招笔试/面试心得)