2017 实习笔试题目

2017.4 实习笔试题目

做了一下某大厂的笔试的题目

1. 一个表, visit(cookie_id, area1, area2, date)

         给出各种查询策略中, 哪一种最好,每一条SQL语句大同小异, 几乎看不出区别, 还有6,7个选项,同时字数很长。一般的SQL语句好像有根据查询的嵌套顺序来比较差异的,但是这道题反而没有。反正蒙了一个。没有数字可算,心里没有底,应该证明了SQL语法可能会很大地影响查询效率。

2.     

         给了几个条件,判断你的名次。又是球赛的问题,考查你的推理能力。

3.

         engineer的哈夫曼二进制编码有几位?

         哈夫曼编码原来是可以构建在一个单词上的。忘了。18位。

4.

         大顶二叉堆的插入后的调整。学过插入排序的话应该没问题。

         只是表示的方式是字符串从左到右。

5.

         没记住。

6.

         考查数据挖掘(或者常见的特征提取)。SVD分解成A=USV­T后问相关的性质。

7.

         iOS和Android。没学过它们, 内存管理,内存循环引用, Address Santizer, 都是什么?

8.

         问了一个很复杂的文字游戏,但是什么内容都没有。就是问p做了一个项目,分割成A, B,然后绕来绕去有矛盾了,要怎么处理团队关系。属于那种毫无意义的只要看最后一句的题目。

9.

         一个原子整数类。AtomicInteger, 话说我学了这么久没见过这个东西啊?

         问测试代码能实现线程安全吗?

10.

         乱七八糟的Java输出,经典的A,B继承和构造的问题。反正构造和析构都会输出。

         A* pa = new B;

         delete pa;

         B* pb = new B;

         delete pb;

11.

         STL容器。太简单了。

12.

         一个可怕的softmax-0, softmax-1公式。没具体学过。用来估计概率的。

13.

14.

         纸币面值凑数问题。

15.

         抽取球的概率题。

16.

         C++。

17.

18.

数据库的函数依赖和第三范式改写。不难。

19.

Linux的kernel space和super space。

         很少接触,除了操作系统内容知道了一些。

20.

         Java的回收机制。

 

附加题2道, 超过1小时。

         第一题是开奖方案,用dfs就知道总方案数了。上交。

         第二题是NLP,说实话不难,字符串长度<100000, 要过滤词和统计词频,但是想到在40分钟内完全做出来应该不太可能,提前交卷。

         不知道该公司有没有签保密协定,好像是没有的。所以这样也没事吧。

 

     这次笔试让我回想起来的书和知识点:

    《Unix网络编程》, 《STL 源码剖析》,《Java核心技术》,《数学之美》,《鸟哥的Linux私房菜》,

    《数据库系统概念》,还有那些没有真正学习的:《iOS编程》,《第一行代码》。

      事实上考得确实不难,而且还有类似编译原理这种问题没有问,可能是担心某些学校并没有开设这门课吧。  

 

2017.8 其他题目

    其实多线程的题目挺有趣的,只是想了想目前遇到的问题并没有太大的启发性。我知道多线程在操作系统中的重要性,进而影响到分布式系统、数据库、安卓开发的学习,而有趣的是目前遇到的问题都是在JAVA语言下写的。可能因为JAVA有原生多线程,写法简单。

 刚刚看了一下一道题,是做的笔试。问:运行如下的代码,最可能输出什么?

import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class MutexLockTest {
   private AtomicInteger counter = new AtomicInteger(0);
   ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
   public int mutexBiz() {
      try {
         if (!readWriteLock.writeLock().tryLock()) {
            return -1;
         }
         return counter.getAndIncrement();
      } finally {
         readWriteLock.writeLock().unlock();
      }
   }

   public static void main(String[] args) throws InterruptedException {
      final MutexLockTest lockTest = new MutexLockTest();
      for (int i = 0; i < 5; i++) {
         new Thread(new Runnable() {
            public void run() {
                try {
                   System.out.print(lockTest.mutexBiz());
                } catch (Exception e) {
                   System.out.print("-2");
                }
            }
         }).start();
      }
      Thread.sleep(5000);
   }
}

   例如结果是 -21023 或者是10324 或者是-210-2-2

   我没办法给出直接的答案。可以想见这个东西应该是有一些套路的。但是显然它的结果是不固定的。这个可能性对于实现互斥和同步来说有什么用,我还是不太清楚。

 

转载于:https://www.cnblogs.com/wangzming/p/6777268.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值