金九银十北漂记第4篇:面试方欣科技

求职平台的比较

 2016年面试第一家公司要从方欣科技开始。第一次在拉钩上投简历,一下子投了三家,分别是:用友科技,广东道一和方欣科技。结果是:用友没有回应,广东道一简历被刷,方欣科技通过简历筛选,并约好了上周四中午2点半进行面谈。

 先说一说几家招聘网站的特点。以前习惯用51job,因为上面的职位多,而且还挺不错。去年校招季用了差不多一个月,渐渐发现广告太多。尤其是那些以招聘为名,实为招培训学生的公司有点多。你看上中了他们的岗位,学历要求低,技能要求低,而且还有技能培训,如果你打电话过去,他们会说,你技术怎么这么差,应该先岗前接收3到4个月的培训,培训结束留在中关村任职,然后有偿的还公司培训费之类的。这其实是挂羊头卖狗肉的生意。一气之下摒弃了51job,于是在网上找另一条出路,经网友推荐:智联招聘。这个平台去年我也用过,不过用的不多,我大学同学倒是经常用这个平台找工作。去知乎了解关于智联招聘的回答:”貌似南方喜欢用51job,北方喜欢用智联招聘”!这个结论不知道是怎么得到的,总之百度得到的类似的回答很多,所以来到帝都,用智联招聘应该是合适的。此外,经同学推荐,这次尝试用拉钩网,这是一家定性为互联网垂直招聘的网站。看着里面确实有很多的互联网公司,一线二线知名的公司都有,比如阿里,百度,小米美团滴滴等,看着逼格确实很高。除了拉钩,互联网内推还有内推网和周伯通。为了多一个机会,我注册了内推网账号,这个平台也是定位了互联网的垂直招聘。我填写资料的时候,技术方向写JAVA,然后官方推荐JAVA内推群。加入内推群之后,里面有很多HR,我的简历上传到QQ群,不一会儿就被hr下载了29次,第二天被下载到35次。刚开始还窃喜,因为感觉这是内推QQ群,看的都是HR,效率应该很高。可没想到的是竟没有一个回复,并且简历的下载次数就一直停留在35次,可能工作经验不足是硬伤!

 到此,注册了三个求职平台的账号和简历。分别是:智联招聘,拉勾网,内推网。并且都制作好了简历,每个网站都有在线简历,在线简历有一个缺点就是:没有专业技能这一项。有毕业学校,工作经历和项目经验,自我评价等,就是找不到专业技能。我猜可以把专业技能写在项目经历或者个人评价这一栏之类的,但是这样我总觉得不习惯。所以干脆自己写一个模板,做成Word简历,分别上传到这三家平台。来到北京之后,同学建议,简历最好改为pdf格式,因为pdf适合HR查阅。

面试过程

 简历通过的时候,心里挺高兴的。地点位于贵阳观山湖兴筑西路口旁边的电信机房,他们租用电信机房的一间写字间。那天天气有点凉爽,甚至有点偏冷,还好现在只是深秋,一件毛线衣服就可以应付。

 总感觉这家公司不是诚心的招人。去到办公间,本来以为有一场面试的,然后面试官说随便谈谈吧。我按照之前HR发来的Email要求,携带了毕业证书,学位证书,身份证复印件等。想交这些东西的时候,面试官说先不急,这些以后再说,然后我就先交了简历。然后面试官看了一眼,问我以前做什么,我说上一份工作在重庆,中国航信。面试官貌似听过中国航信,说:”哦,中国航信是吧!”,然后问我主要做什么之类的。我觉得面试官可能没有把我的简历看完,然后提醒他第二页还有内容,这时他下意识的翻开简历的第二页。面试官说到:”是这样的,我们公司应聘技术开发的,首先要做一份试卷,只是作为一个参考”。我说”好的”,然后接过试卷。

笔试内容

 试卷貌似有4到5页,主要考察:编程基础,这部分是简答题;算法基础,要手写程序;web前端技术,手写程序;SQL语言,也是手写程序。大部分的题目已经忘记了,希望能够回忆起一些题目,因为这家面试到的,可能下一家也会面试到。

Q:servlet和jsp是不是线程安全的?

 A:不是安全的。当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。Servlet容器会自动使用线程池等技术来支持系统的运行,这样,当两个或多个线程同时访问同一个Servlet时,可能会发生多个线程同时访问同一资源的情况,数据可能会变得不一致。所以在用Servlet构建的Web应用时如果不注意线程安全的问题,会使所写的Servlet程序有难以发现的错误。

Q:float和double适合货币的单位吗?如果不适合,有其他的替代方案吗?

 A:以前不注意这方面的问题,所以当时的这道题答案是空白的。回来百度一下,发现float和double确实不适合做货币的单位。无论是使用float还是double,精确度都不够。改为BigDecimal较好。具体的详解,可以参考https://my.oschina.net/Jerrysun/blog/707642

Q:什么是事务?hibernate和spring如何使用事务?

 A:事务是为了保证数据的一致性和完整性。事务具有4个特性:原子性,一致性,隔离性,持久性。在hibernate中开始事务是:Transaction tx = session.beginTransactioin();Spring配置文件中关于事务配置总是由三个组成部分,DataSource、TransactionManager和代理机制这三部分,无论是那种配置方法,一般变化的只是代理机制这块!详解可以参考http://blog.csdn.net/trigl/article/details/50968079

Q:HashMap和HashTable的区别?

 A:相同点:他们都是Map接口的实现类,实现了将唯一键映射到特定的值上。

 不同点:HashMap类没有分类或者排序,它允许一个null键和多个null值。Hashtable类似于HashMap,但是它不允许null键和null值。它也比HashMap慢,因为它是同步的。
他们的父类不同:
public class Hashtable(K,V)extends Dictionary(K,V) implements Map(K,V), Cloneable, Serializable

public class HashMap(K,V) extends AbstractMap(K,V) implements Map(K,V), Cloneable, Serializable
两者间最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是;在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
这里写图片描述

Q:输出蛇形方正,如让用户输入层数,如果用户输入的3,则输出如下:

1 8 7
2 9 6
3 4 5

 A:大二上学期我们学校组织的算法比赛最后一道题目就是这道题目。但是上机的时候没有写出来,后来看刘汝佳的算法白皮书才写出来的。当时用用C语言写了一遍http://blog.csdn.net/zhang5476499/article/details/14228465

#include<stdio.h>
#include<string.h>
#define MAXN 10
int a[MAXN][MAXN];
int main()
{
    int n,x,y,tot=0;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    tot=a[x=0][y=0]=1;
    while(tot<n*n)
    {
        while(x+1<n&&!a[x+1][y])    
            a[++x][y]=++tot;
        while(y+1<n&&!a[x][y+1])    
            a[x][++y]=++tot;
        while(x-1>=0&&!a[x-1][y])   
            a[--x][y]=++tot;
        while(y-1>=0&&!a[x][y-1])   
            a[x][--y]=++tot;
    }

    for(x=0;x<n;x++)
    {
        for(y=0;y<n;y++)
            printf("%3d ",a[x][y]);
        printf("\n");
    }
    printf("\n");

    return 0;
}

Q:自己构造一个树的数据结果,然后用递归和回溯分别遍历这棵树.

A:下面这两道题都回答的不是很好,甚至最短路劲迪杰斯特拉算法都忘记了。这道题当时是用伪算法来描述的。

定义的数据结构如下:

public class BinaryTree {
    public int value;
    public BinaryTree leftChild;
    public BinaryTree rightChild;
}

遍历算法如下:

    public static void travelTree(BinaryTree tree) {
        if(tree.leftChild != null) {
            travelTree(tree.leftChild);
        } else if(tree.rightChild != null) {
            travelTree(tree.rightChild);
        } else {
            System.out.println(tree.value);
        }
    }

 这样的回答,我自己都满意,不过只能按照自己理解的来了。大二上学期,学过一学期的数据结构与算法,那时候以为”程序=数据结构+算法”,然后自己就抛弃其他课程,只学一门课程就是《数据结构》。谁知道数据结构博大精深,期末结束也之到入门水平而已,想把进阶留到实战中去提升。谁知道JAVA的高度封装,从来不用自己考虑数据结构,从此与数据结构无缘。处于我这个阶段的水平很尴尬,如果说自己没有学过数据结构,可是心有不甘。因为毕竟曾经还是花了很多心血来学了数据结构,并写了很多小程序。在面试的时候,说自己学过数据结构,但是很久没有使用了,忘得只剩下一个概念了,面试官随便问都会把自己问住。于是在简历中干脆就把数据结构这一项技术给抹杀掉。这次笔试遇到的这几道题,凭着自己残留的一些记忆,用自己独创JAVA的方式来写了一个二叉树结构和二叉树的遍历的方法,想想还是有点滑稽,甚至都没有验证过是否是可行的。翻开自己以前的C语言写的数据结构http://blog.csdn.net/zhang5476499/article/details/16801923,现在都差点认不出是自己写了。

Q:用文字或者图形的方式来描述一下最短路劲算法

A:这题目完全放弃。最短路劲迪杰斯特拉算法是教科书中提到最多的算法。无论是《数据结构》,还是《离散数学》或者是《计算机网络》的路由算法都有这哥们。记得学《离散数学》的时候,整本书一个概念都不懂,唯独就看懂这一算法而已。数学的功底差是我的硬伤,可能是将来束缚我技术的净瓶。如果再回到学校一次,我会重新学一遍《高等数学》《线性代数》《离散数学》这三门课程。当时期末考试还勉强把图画出来。现在几乎忘记了。有机会一定重新学一遍数据结构。JAVA初级工程师和高级工程师的区别之一就是重视不重视数据结构。

Q:获取所有的div,

 A:

<script type="text/javascript">
    $(document).ready(function(){
        var divs = $("div");
        divs.each(function(){
            console.log(divs.text());
        });
    });
</script>
<body>
    <div id="div1">div1
        <div id="div2">div2</div>
        <div id="div3">div3</div>
    </div>
</body>

Q:让div的背景颜色变红

 A:

<script type="text/javascript">
    $(document).ready(function(){
        $(".btn").click(function(){
            if($(this).val() == "red") {
                $(".div-a").css("background-color", "orange");
            } else {
                $(".div-a").css("background-color", "red");
            }
        });
    });
</script>
<body>
    <div class="div-relative">
        <div class="div-a">我背景为红色</div>
    </div>
    <button class="btn" value="red">变红</button>
    <button class="btn" value="blue">变蓝</button>
</body>

Q:在一个表格中点击”add”然后添加一行,点击”delete”删除一行

A:

<script type="text/javascript">
    $(document).ready(function(){
        $(".btn").click(function(){
            if($(this).val() == "add") {
                $("tbody").append("<tr><td>3</td><td>卢俊义</td></tr>");
            } else {
                //获取表格的最后一行
                $("tr:last").remove();
            }
        });
    });
</script>
<body>
    <table border="1px" width="200px">
        <thead>
            <tr><th>学号</th><th>姓名</th></tr>
        </thead>
        <tbody>
            <tr><td>1</td><td>松江</td></tr>
            <tr><td>2</td><td>林冲</td></tr>
        </tbody>
    </table>
    <button class="btn" value="add">增加一行</button><button class="btn" value="del">删除一行</button>
</body>

总结

 做完笔试题目的时候,交给面试官,面试官说:”行,你先回去吧,我们会尽快通知你的!”,我当时感觉不太好,怎么没有面试了,就仅仅是凭借笔试卷子了么?而且也没有谈薪资什么之类的。

 既然面试官都这么说了,我也只能先回去了。当然我的试卷也不是回答的那么好,毕竟全是手写代码,这个有点老火,尤其很久没有写前端代码了。题目和解析都是都是下来自己边查api边写的,当时还真的没有写出这么多的答案。过了一周发短信给方欣科技的面试官,问我的面试结果怎么样了,面试没有回复,意味着:没戏了。

 最后,学会总结,才能成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值