剑指Offer——好未来视频面知识点储备+面后总结

情景介绍

  • 时间:2016.10.12 13:00-
  • 地点:宿舍
  • 事件:好未来视频面

知识点储备

数据结构

单链表反转

public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
    private static ListNode ReverseList(ListNode head) {
        if (head == null)
            return null;
        ListNode reversedHead = null;
        ListNode current = head;
        ListNode pNext = null;
        ListNode pre = null;
        while (current != null) {
            pNext = current.next;
            current.next = pre;
            if (pNext == null)          // 确定反转后的头结点
                reversedHead = current;
            pre = current;
            current = pNext;
        }
        return reversedHead;
    }

合并两个排序的链表

    /**
     *
     * @param ListNode
     *              链表1
     * @param ListNode
     *              链表2
     * @return ListNode
     *              合并后的链表
     */
    private static ListNode Merge(ListNode list1,ListNode list2) {

        // 其中之一为空或均为空
        if(list1 == null || list2 == null){
            return list1 == null?(list2 == null?list1:list2):list1;
        }else{
            ListNode headNode = null;
            if(list1.val < list2.val){
                headNode = list1;
                headNode.next = Merge(list1.next, list2);
            }else{
                headNode = list2;
                headNode.next = Merge(list1, list2.next);
            }
            return headNode;
        }
    }

求两个链表的第一个公共节点问题

private static ListNode FindFirstCommonNode2(ListNode pHead1, ListNode pHead2) {
        // 第一步首先是特殊输入测试,即为空或长度为0的情况,切记!
        if(pHead1 == null || pHead2 == null){
            return null;
        }
        int len1 = getLength(pHead1);
        int len2 = getLength(pHead2);
        int difLen = 0;
        // pHeadTmp1指向较长链表
        ListNode pHeadLong = pHead1;
        // pHeadTmp2指向较短链表
        ListNode pHeadShort = pHead2;
        if(len1 > len2){
            difLen = len1 - len2;
        }else{
            pHeadLong = pHead2;
            pHeadShort = pHead1;
            difLen = len2 - len1;
        }
        // 1.先让长的链表走difLen步
        for(int i = 0; i < difLen; i++){
            pHeadLong = pHeadLong.next;
        }
        // 2.对齐后,两个链表同时走
        while(pHeadLong != null && pHeadShort != null && pHeadLong != pHeadShort){
            pHeadLong = pHeadLong.next;
            pHeadShort = pHeadShort.next;
        }
        return pHeadLong;
    }

    private static int getLength(ListNode pHead){
        int len = 0;
        while(pHead != null){
            len++;
            pHead = pHead.next;
        }
        return len;
    }

多线程

线程与进程的区别

实现生产者、消费者

package cn.edu.ujn.producer_customer;

// 公共资源类
class PublicResource {

    private static final int MAX_RESOURCE_NUMBER = 10;
    private int number = 0;    

    /**
     * 增加公共资源
     */
    public synchronized void increace() {
        while (number > MAX_RESOURCE_NUMBER) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 添加资源
        number++;
        System.out.println(number);
        // 进行通知
        notify();
    }    

    /**
     * 减少公共资源
     */
    public synchronized void decreace() {
        while (number == 0) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        number--;
        System.out.println(number);
        notify();
    }
}

// 生产者线程,负责生产公共资源
class ProducerThread implements Runnable {
    private PublicResource resource;    

    public ProducerThread(PublicResource resource) {
        this.resource = resource;
    }    

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep((long) (Math.random() * 1000));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            resource.increace();
        }
    }
}    

// 消费者线程,负责消费公共资源
class ConsumerThread implements Runnable {
    private PublicResource resource;    

    public ConsumerThread(PublicResource resource) {
        this.resource = resource;
    }    

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep((long) (Math.random() * 1000));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            resource.decreace();
        }
    }
}    

public class ProducerConsumerTest {
    public static void main(String[] args) {
        PublicResource resource = new PublicResource();
        new Thread(new ProducerThread(resource)).start();
        new Thread(new ConsumerThread(resource)).start();
        new Thread(new ProducerThread(resource)).start();
        new Thread(new ConsumerThread(resource)).start();
        new Thread(new ProducerThread(resource)).start();
        new Thread(new ConsumerThread(resource)).start();
    }
}    

多线程发短信

设计模式

观察者设计模式

单例模式

简单工厂

工厂方法

抽象工厂设计模式

代理设计模式

动态代理设计模式

排序

快排

归并排序

查找

二分查找

存储

堆栈区别

算法

克鲁斯卡尔算法

J2EE

对Spring中IOC、AOP的理解

面后总结

  • 1.数据库索引(聚集索引、组合、主键、普通、唯一)
  • 2.select * from db_name where name=’demo’order by age group by age;执行顺序。
  • 3.提高数据库查询效率的措施。
  • 4.基本数据类型 int、long、short、float、double、char、boolean、byte
  • 5.float与double的区别:精度不同。
  • 6.冒泡排序、快速排序;

  数据库这一块自己是完败!自己只是用了mysql,但是对于里面的概念自己真的表示无能为力!其中数据库索引这一块,其实在项目开发中,自己也没有使用到。惭愧无比!但是简历中明明写了熟悉SQL语句、存储过程和函数(从第二道问题中就完全推翻了自己。)。不能使之成为自己的鸡肋!

 Mysql语法顺序,即当sql中存在下面的关键字时,它们要保持这样的顺序:

  • select[distinct]、from、join(如left join)、on、where、group by、having、union、order by、limit

  Mysql执行顺序,即在执行时sql按照下面的顺序进行执行:

  • from、on、join、where、group by、having、select、distinct、 union、order by

  group by要和聚合函数一起使用,例如:

  • select a.Customer,sum(a.OrderPrice) from orders a where a.Customer=’Bush’ or a.Customer = ‘Adams’ group by a.Customer
  • 数据库+Java是自己找工作的双翼。

  通过面试,还可以发现的问题就是自己的简历中项目过少,导致面试官关于项目的面试中,所问的问题不会太多(这是面试官反映的)。但是,自己感觉也只有“立马送药”这个项目可以拿得出手,其他的项目只可说是练习项目,例如“鲜花礼品网”、“CTCs监测系统”、“竞彩APP”。

  另外,如果视频面的话,最好戴耳麦,否则会很尴尬的。自己当时就没有戴耳麦,结果说话时音调稍不均匀,就会带来很大的噪声与回音,严重影响了面试质量。第一次视频面,姑且作为教训。

  最后可以问面试官问题,最恰当的问题莫过于“请评价一下我此次的视频面,还欠缺哪方面的知识储备,面试结果何时可以给出”。

  最后,自己给自己的面试评分为55。





剑指Offer——好未来视频面知识点储备+面后总结的更多相关文章

  1. 剑指Offer——顺丰笔试题+知识点总结

    剑指Offer--顺丰笔试题+知识点总结 情景回顾 时间:2016.10.16 19:00-20:40 地点:山东省网络环境智能计算技术重点实验室 事件:顺丰笔试 知识点总结 快排 霍尔排序(快排) ...

  2. 剑指Offer——乐视笔试题+知识点总结

    剑指Offer--乐视笔试题+知识点总结 情景回顾 时间:2016.9.19 15:10-17:10 地点:山东省网络环境智能计算技术重点实验室 事件:乐视笔试   总体来说,乐视笔试内容体量不算少, ...

  3. 剑指Offer——携程笔试题+知识点总结

    剑指Offer--携程笔试题+知识点总结 情景回顾 时间:2016.9.17 19:10-21:10 地点:山东省网络环境智能计算技术重点实验室 事件:携程笔试 总体来说,携程笔试内容与其它企业笔试题 ...

  4. 剑指Offer——京东校招笔试题+知识点总结

    剑指Offer--京东校招笔试题+知识点总结 笔试感言 经过一系列的笔试,发觉自己的基础知识还是比较薄弱的,尤其是数据结构和网络,还有操作系统.工作量还是很大的.做到精确制导的好方法就是在网上刷题,包 ...

  5. 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

    剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...

  6. 剑指Offer——CVTE校招笔试题+知识点总结(Java岗)

    剑指Offer(Java岗)--CVTE校招笔试题+知识点总结 2016.9.3 19:00参加CVTE笔试,笔试内容如下: 需要掌握的知识:Linux基本命令.网络协议.数据库.数据结构. 选择题 ...

  7. 剑指Offer:面试题24——二叉搜索树的后序遍历序列(java实现)

    问题描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 思路: 1.首先后序遍历的结果是[(左子 ...

  8. 剑指offer(23)二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 题目分析 1.后续遍历我们可以知道,最右边的是根节 ...

  9. 剑指offer编程题Java实现——面试题4后的相关题目

    题目描述: 有两个排序的数字A1和A2,内存在A1的末尾有足够多的空余空间容纳A2.请实现一个函数,把A2中的所有数字插入到A1中并且所有的数字是排序的. 还是利用从后向前比较两个数组中的数字的方式来 ...

随机推荐

  1. .NET CORE 2.0之 依赖注入在类中获取IHostingEnvironment,HttpContext

    在.NET CORE 中,依赖注入非常常见, 在原先的 HttpContext中常用的server.Mappath已经么有了如下: HttpContext.Current.Server.MapPath ...

  2. [HNOI 2011]数矩形

    Description 题库链接 给出平面上 \(n\) 个点,选出四个点作为矩形顶点.求出矩形最大面积. \(1\leq n\leq 1500\) Solution 转载自 Z-Y-Y-S dark ...

  3. [HNOI2002]跳蚤

    题目描述 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最 ...

  4. ●洛谷P1291 [SHOI2002]百事世界杯之旅

    题链: https://www.luogu.org/recordnew/show/5861351题解: dp,期望 定义dp[i]表示还剩下i个盖子没收集时,期望还需要多少次才能手机完. 初始值:dp ...

  5. remove、erase

    remove: remove不是真正的删除,删除后数量并没有变化. 它接收一对迭代器,而不是一个容器,所以不知道它作用于哪个容器. 而且没有办法从一个迭代器获取对应于它的容器 实现 remove会用需 ...

  6. 2015 多校联赛 ——HDU5303(贪心)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  7. [BZOJ]1089 严格n元树(SCOI2003)

    十几年前的题啊……果然还处于高精度遍地走的年代.不过通过这道题,小C想mark一下n叉树计数的做法. Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该 ...

  8. UOJ #11. 【UTR #1】ydc的大树

    题目描述: ydc有一棵n个结点的黑白相间的大树,从1到n编号. 这棵黑白树中有m个黑点,其它都是白点. 对于一个黑点我们定义他的好朋友为离他最远的黑点.如果有多个黑点离它最远那么都是它的好朋友.两点 ...

  9. [2017/5/28]FJ四校联考

    来自FallDream的博客,未经允许,请勿转载,谢谢. 话说这一段时间算是过去了,好久好久之后终于又有联考了  没想到这次到我们学校出题,昨天才想起来,临时花一天赶了一套,我出了一个sbFFT,质量 ...

  10. BZOJ1187 [HNOI2007]神奇游乐园(插头dp)

    麻麻我会写插头dp了! 推荐陈丹琦论文:https://wenku.baidu.com/view/3e90d32b453610661ed9f4bd.html 破题调一年 #include <cs ...