天天看点

本科小白初次面试被吊打吓哭,问心理阴影面积有多大

今天参加了上海一家公司面试,面试Java开发实习。公司规模不大,但是氛围很好。面试官看出我是个小白,也没有嘲笑我,还很耐心地给我讲题,倒是本人自惭形秽,自己把自己吓哭了。

和面试官聊天氛围很轻松,面试官特别友好,总是面带笑容。

本篇总结是针对我个人情况的,并不是所有人都适用,面试官相当灵活,面试过程我感觉他就是久经沙场的资深程序员了,感觉他什么都会。我回来立马就查了下百度,记录一下我不会和没答好的题目。以下就是我的心里阴影面积的大小了。

面试官先问了问我的大学课程,问到了数据结构。数据结构我大二时候上的课,我就悄悄地说,可能记不清了。果然二叉树的作用我就没答上。

  1. 二叉树的作用?

    热心网友资料:https://www.cnblogs.com/wwjchina/p/7749556.html

    二叉树是一种重要的数据结构,与数组、向量、链表都是一种顺序容器,它们提供了按位置访问数据的手段。但是有一个缺点,它们都是按照位置来确定数据,想要通过值来获取数据,只能通过遍历的方式。而二叉树在很大程度上解决了这个缺点,二叉树是按值来保存元素,也按值来访问元素。

    二叉树由一个个节点组成,一个节点最多只能有两个子节点,从根节点开始左右扩散,分左子节点和右子节点,向下一直分支。

    许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树是递归定义的。

接着问到了我笔试题上面的一个题,因为没掌握,本人答得不是特别精确,弱化了单例模式的适用场景。面试官问到我的时候,我吧啦吧啦讲了一堆不沾边的。

  1. 单例模式适用于什么?

    热心网友提供的资料:https://www.cnblogs.com/restartyang/articles/7770856.html

    创建单一对象,提高效率的一种模式。

    适用场景:

    单例模式只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等。

    一种比较常见的设计模式,三个方面的作用:

    1.控制资源的使用,通过线程同步来控制资源的并发访问;

    2.控制实例产生的数量,达到节约资源的目的;

    3.作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。

面试官是真的很友好,我没答上,他还会给我讲解作用是什么,为什么使用这个。接下来谈了谈算法。最后问到了我的项目。项目中有一个前后端分离的学习项目,面试官就按照那个项目问了我sql、mybatis、vue、Git一些知识。

  1. Vue和Jquery的区别

    热心网友的博客地址:https://blog.csdn.net/weixin_38639882/article/details/84963311

    Vue是数据驱动Dom,Jquery是Dom驱动数据。

    jQuery是使用选择器()选取DOM对象,对其进行赋值、取值、事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。

    改变一:有了前端工程师,而不是随便一个会点html的美工就能跟你抢饭碗!

    改变二:服务端渲染VS客户端渲染

    改变三:渲染优雅,代码易维护

    改变四:跨平台

  2. mybatis中在xml文件里写sql时#和 $ 的区别。

    优先使用#{paramName,jdbcType=VARCHAR} 写法,除了可以防止sql注入以外,它还能在参数里含有单引号的时候自动转义

    而 ${paramName} 由于是 类似于拼接sql的写法,不具备此功能。

  3. Git如何合并分支?

    热心网友资料:Git-分支的新建与合并

  • 一个简单提交历史
现在,你已经决定要解决你的公司使用的问题追踪系统中的 #53 问题。 想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令:
  • 带有 -b 参数的 git checkout 命令
    $ git checkout -b iss53
    Switched to a new branch "iss53"
               
    它是下面两条命令的简写:
    $ git branch iss53
    $ git checkout iss53
               
  • 基于 master 分支的紧急问题分支 hotfix branch
你可以运行你的测试,确保你的修改是正确的,然后将其合并回你的 master 分支来部署到线上。 你可以使用 git merge 命令来达到上述目的:
  • git merge 命令合并回你的 master 分支来部署到线上
    $ git checkout master
    $ git merge hotfix
    Updating f42c576..3a0874c
    Fast-forward
    index.html | 2 ++
    1 file changed, 2 insertions(+)
               

在合并的时候,你应该注意到了"快进(fast-forward)"这个词。 由于当前 master 分支所指向的提交是你当前提交(有关 hotfix 的提交)的直接上游,所以 Git 只是简单的将指针向前移动。 换句话说,当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)”。

现在,最新的修改已经在 master 分支所指向的提交快照中,你可以着手发布该修复了。

面试官完完全全给我讲解了一遍笔试题,连最后的逻辑推理,也带我过了一遍。问了我一些基本情况,对我讲了一些提高个人技能的建议。

面试官还提到了SpringCloud,我还没学到,马上就去学习!

真的很感谢他,因为是第一次面试,这次真的蛮特别的一次经历。虽然在这个过程中我自己把自己吓哭了,但无论结果如何,我都很感谢这位面试官。

END