记第一次面试经历

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

  初试花了一下午:

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

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

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

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

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

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

https://blog.csdn.net/danting1126/article/details/61627737

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

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

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

进程同步——经典的同步问题

操作系统之进程管理(2)——进程互斥和进程同步

进程之间如何保证同步

进程间通信的方式——信号、管道、消息队列、共享内存

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

5个步骤,教你瞬间明白线程和线程安全

当我们说线程安全时,到底在说什么

并发基础知识 — 线程安全性

什么情况下需要考虑到线程,以及线程安全的问题?

什么情况下会有线程安全问题

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

Java中HashMap和TreeMap的区别深入理解

HashMap和TreeMap的区别

TreeMap与HashMap的区别和共同点

7.讲一下ThreadLocal:

Java并发编程:深入剖析ThreadLocal

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

数据库中,什么是事务?

漫谈MySql中的事务

MySQL事务

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

乐观锁与悲观锁及应用举例

SSM(十五) 乐观锁与悲观锁的实际应用

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

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

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

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

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

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

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

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

session在什么时候创建,以及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如何防范:

CSRF攻击原理及防御

整理关于web项目如何防止CSRF和XSS攻击的方法

好啦,总结就到这了。

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

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

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

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

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

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值