博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记第一次面试经历
阅读量:3889 次
发布时间:2019-05-23

本文共 2087 字,大约阅读时间需要 6 分钟。

  在大三上学期偶然看到院系群中字节跳动武汉分部在招聘实习生,本菜鸟便有了“万一呢”的尝试念头。毕竟学了几个月的java web框架用了一些,还做了个小网站:

  初试花了一下午:

      用了两个多小时讲字节跳动有多NB(看来招聘会也是宣讲会啊?)。然后一个半小时参加笔试:3道算法题,低难度。然后等待结果通知时,被告知初试通过,要求准备面试,经历了时间冲突,面试官出差等事情,半个月后参加了第一次笔试。

结果那叫一个惨,感觉自己被狠狠地鄙视了(面试官表情:什么?这你都不会???⊙﹏⊙摊手)。(我小声比比:我只看了业务问题,没有看算法啊?)

问题都有:(问题答案都是我之后补充的,当时都是蒙的)

1:先要求写一个算法(基础难度),我直接用的递归,不会优化。。。,题目给忘了,其中有一个小问题拿出来分享一下:n的取值范围为0到10,可以进行++n和--n操作。对于++n可以使用n%11来让他保持范围,可是对于--n呢?如何让0--得到的是10而不是-1?当时用的是判断是否为0,然后分别处理,面试官要求用其他方法,额不会。现在查了一下,还是不会做。。。

2:口述算法如何完成,忘记题目了。(也是用的遍历。。。,我要努力学好算法)

3:叙述快排原理(我心态崩了,尼玛说好的业务面试呢???)。

4.操作系统的最小调度单位是什么?(说好的一个进程不分家呢?(┬_┬))

现代的操作系统包括了进程和线程这两种调度单位。进程是指程序中正在运行的一个应用程序。线程是系统分配处理器时间资源的基本单位。对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。

操作系统的最小调度单位是线程。

5:进程同步如何实现?(尼玛,人的记忆真是个神奇的东西,我学的操作系统全被我喂狗吃了。我当时还傻乎乎的说我不知道还有进程同步这个东西,现在的我真想抽当时的自己。)

6.线程安全?什么情况下会不安全?

6.你最擅长的语言是什么?(java简单喽,只能学学java过过小日子)。那treemap和hashmap的区别(吐-.-,在说尼玛呢)

7.讲一下ThreadLocal:

8:数据库什么是事务,事务如何实现的:

9:悲观锁和乐观锁,什么时候使用:

乐观锁是在应用层加锁,而悲观锁是在数据库层加锁(for update) 

乐观锁顾名思义就是在操作时很乐观,这数据只有我在用,我先尽管用,最后发现不行时就回滚。

悲观锁在操作时很悲观,生怕数据被其他人更新掉,我就先将其先锁住,让别人用不了,我操作完成后再释放掉。

悲观锁需要数据库级别上的的实现,程序中是做不到的,如果在长事务环境中,数据会一直被锁住,导致并发性能大大地降低。

一般来说如果并发量很高的话,建议使用悲观锁,否则的话就使用乐观锁。

如果并发量很高时使用乐观锁的话,会导致很多的并发事务回滚、操作失败。

总之,冲突几率大用悲观,小就用乐观。

10:session如何发送到客户端的?

服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。

服务器初次创建session的时候后返回session到客服端(在返回头(response)中有setCookie),浏览器会把sessionname->sessionid存到cooike中,同path下再次请求服务器时,会自动在请求头中带上cooike信息,服务器可以在_COOKIE中得取到想要的session

session一般默认由tomcat管理,使用springsession可以保存数据库、内存中,大型项目一般都会有redis集群来保存和管理session

1:在servlet中手动调用

HttpSession session = request.getSession();

如果当前没有session,则会立刻建立一个session;如果有session则返回当前session。
2:jsp中没有写<%@ page session="false"%>
(默认情况下它是<%@ page session="true"%>的)

如果两个条件同时都不满足,那么你建立的只是一个无seesion的连接。

11:csrf如何防范:

好啦,总结就到这了。

  ?菜不是问题,不努力才是原罪。因为自己不注重基础知识和算法,曾天真的认为这些和编程关系不大,用的时候查一下就好,现在知道自己有多天真了。自己原来这半年一直学习的是如何成为一个api caller,和程序员没多大关系。不过还好现在才大三,还有一个学期让我重新拾回算法。↖(^ω^)↗加油。

  因此从新定位自己的学习目标:

1.重新学习java基础知识,将疯狂java讲义中的每一个习题做一遍。

2.重新学习数据结构和算法,将课本中的习题重新做一遍。

3.总结之前学到的知识点,抽时间学习新技术。

 

转载地址:http://dfihn.baihongyu.com/

你可能感兴趣的文章
在 WordPress 指定页面加载指定 JavaScript 或 CSS 代码
查看>>
Apache配置多个监听端口和不同的网站目录的简单方法
查看>>
Linux 搭建 discuz 论坛
查看>>
如何在discuz帖子中插入视频
查看>>
怎么更改织梦网站logo和默认广告
查看>>
织梦系统如何插入优酷视频?
查看>>
Discuz设置特定用户组不启用验证码发帖权限
查看>>
百度云服务器 CentOS 图形界面支持
查看>>
为什么要使用R语言?历数R的优势与缺点
查看>>
[小技巧] Linux 下查询图片的大小
查看>>
Linus Torvalds说那些对人工智能奇点深信不疑的人显然磕了药
查看>>
[小技巧] svn: 不能解析 URL
查看>>
USB_ModeSwitch 介绍
查看>>
大公司和小公司的抢人战,孰胜孰负?
查看>>
通过make编译多文件的内核模块
查看>>
如何调试Javascript代码
查看>>
皮克斯宣布开源Universal Scene Description
查看>>
复盘:一个创业项目的失败之路
查看>>
阿里巴巴宣布加入Linux基金会
查看>>
为什么你应该尝试 “全栈”
查看>>